gpt4 book ai didi

vb.net - VB.NET 中的静态成员

转载 作者:行者123 更新时间:2023-12-04 23:10:45 35 4
gpt4 key购买 nike

我以前是这样写的:

Private Sub Example()
Static CachedPeople As List(Of MyApp.Person)
If CachedPeople Is Nothing Then
CachedPeople = New List(Of MyApp.Person)
End If
...rest of code...
End Sub

但后来想知道我是否可以将其减少为:
Private Sub Example()
Static CachedPeople As New List(Of MyApp.Person)
...rest of code...
End Sub

问题是,“New”位是否只在函数第一次执行时执行一次,但在下一次调用中,它已经存在。

干杯,罗伯。

最佳答案

正如您所提到的,它只会执行一次,并且在下一次函数调用时,它将引用相同的对象。顺便说一下,您的第一个代码段不是线程安全的。如果两个线程同时调用您的函数,它们最终可能会运行构造函数两次,这不是您想要的。使用第二个代码段可以让您免于手动锁定并确保线程安全,因为编译器会为您生成适当的代码。

请注意,如果您已将其声明为

Static x As List(Of String)
x = New List(Of String)

每次都会重新创建它。

关于vb.net - VB.NET 中的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1483760/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com