2011-01-06 8 views
0

私は次のコードを持っている:共有変数/静的変数は何もありません。何が得られますか?

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 

Amは困惑を...なぜtheGlobalオブジェクトは何もありませんか?

+0

Test()メソッドを実行しているコードを表示できますか?具体的には、そのコードの前のすべてがうまくいくでしょう。 – NotMe

+1

このコードは意味をなさない。プライベート共有への単純な変更グローバルなオブジェクト=新しいオブジェクト()、グローバルな部分がすべての問題を解決するかどうかを削除する。 – HABJAN

+0

これはちょうど状況を再現するためのちょっとしたコードです。しかし、@Jonは正しかった、私はデバッガと私の "ウォッチ"ウィンドウで私はプロパティを持っていた - ちょうどそれがウォッチウィンドウが隠され、私は "ローカル"と "イミディエイト"ウィンドウを見ていたので、それを認識していない。 – Denis

答えて

5

実際にあなたのコードであると仮定すると、デバッガでこれをブレークポイントで実行していて、ウォッチウィンドウはプロパティを評価しています(theGlobalを初期化しています)。

似たような状況でこれまでに見たことに基づいて推測します。

それでも問題が解決しない場合は、問題を再現し、すべて実行できる、短くて完全なコンソールアプリケーションを作成してみてください。

+0

あなたはダ男!今度は "Watch"ウインドウのプロパティを持っていたのですが... Ughhhhh! – Denis

3

私はあなたがあなたのコードに応じて、初期化されるフィールドのためのグローバル・プロパティにアクセスする必要が

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

を意味だと思います。

+1

いいえ、彼の質問のポイントは、彼が*プロパティにアクセスしなければ*それは何もないと期待していますが、そうではありません。 –

+0

@Jon Wow、完全に間違って読んでください。ありがとう。 – NickAldwin

+0

@ジョン、ありがとう、ちょうど – Denis

関連する問題