C# 共享/静态变量只能是Isn';什么给你?

C# 共享/静态变量只能是Isn';什么给你?,c#,.net,vb.net,C#,.net,Vb.net,我有以下代码: Public Class TestClass Public Sub Main() If theGlobal IsNot Nothing Then Throw New Exception("What gives!") End Sub Private Shared theGlobal As Object = Nothing Private Shared ReadOnly Property Global Get

我有以下代码:

Public Class TestClass
    Public Sub Main()
        If theGlobal IsNot Nothing Then Throw New Exception("What gives!")
    End Sub

    Private Shared theGlobal As Object = Nothing
    Private Shared ReadOnly Property Global
        Get
            If theGlobal Is Nothing Then
                theGlobal = New Object()
            End If

            Return theGlobal 
        End Get
    End Property
End Class
我被难住了。。。为什么全局对象不是什么都没有?

我想你的意思是

If Global Is Nothing Then Throw New Exception("What gives!")

您必须根据您的代码访问要初始化的字段的全局属性。

假设这确实是您的代码,我猜您正在调试器中使用断点运行此操作,并且监视窗口正在评估属性,该属性正在初始化
全局

只是一个猜测,根据我以前在类似情况下看到的情况


如果这没有帮助,请尝试编写一个简短但完整的控制台应用程序,该应用程序可以重现问题,并且我们都可以运行。

能否显示运行Test()方法的代码?具体来说,在这段代码之前的一切都很好。这段代码没有意义。简单更改为Private Shared theGlobal As Object=New Object(),并删除全局部分是否可以解决所有问题。这是一段愚蠢的代码,只是为了重现这种情况。但是@Jon是对的,我在调试器中,在我的“Watch”窗口中我有属性-只是没有意识到,因为Watch窗口是隐藏的,我正在查看“Locals”和“Immediate”窗口。不,他的问题是,如果他不访问属性,他希望它什么都没有。。。但不是,你这个男人!花了两个小时想弄清楚到底发生了什么。。。一直在“监视”窗口中的财产。。。啊!