在单线程环境中考虑以下功能上的两个代码片段。假设没有其他方法,Foo
我相信这些方法在功能上是相同的。
Class Foo
Private _Bar As Bar
Public ReadOnly Property GetBar As Bar
Get
If IsNothing(_Bar) Then
_Bar = New Bar
End If
Return _Bar
End Get
End Property
End Class
和
Class Foo
Public ReadOnly Property GetBar2 As Bar
Get
Static _Bar As New Bar
Return _Bar
End Get
End Property
End Class
今天我在遵循第二种方法的代码上受到挑战,因为“每次都会调用 New”。我已经知道这是错误的,但主要的反对意见是关于使用Static
. 我发现几个对静态变量的引用表明它们可能很危险,但它们都在谈论 Java。但是,我找不到任何好的解释来解释原因。
这两种方法有何不同?第二种方法危险吗?如果是这样,为什么?