0
Class klass

   Private Shared state As Boolean


   Public Sub savestate (ByVal value As Boolean)
       state = value
   End Sub

   Public Function getstate () As Boolean
      Return state 
   End Function

   Private Sub work()
      savestatet(false)
   End Sub 

   Private Sub work2()
     If getstate()
       ....

   End Sub
 ...
End Class

このように共有変数を使用するのは正しいですか、それとも のようにアクセスするだけですかstate = false, and if state... do something

4

2 に答える 2

1

通常、これはより明確な構文のためにプロパティを使用して行われますが、それ自体は、いくつかの get/set 関数を使用することは間違いではありません。

Private Shared internalState As Boolean

Public Property State() As Boolean
    Get
      Return internalState
    End Get
    Set(ByVal value As Boolean)
      internalState = value
    End Set
End Property

ただし、共有変数はクラスのすべてのインスタンス間で「共有」されることに注意してください。だから宣言すれば

Dim c1 = new klass()
c1.State = True

Dim c2 = new klass()
Console.WriteLine(c2.ToString)  ' Prints True'

また、Intellisense 機能を備えたクラスのメンバーを提案できる IDE を使用している場合、プロパティを使用すると使いやすさが向上することも付け加えておきます。検索する項目 (プロパティ名) は 1 つだけであり、メソッドの名前は 2 つではありません。関連はあるものの、アルファベット順に散らばっています。(状態取得、状態保存)

于 2013-09-24T18:49:19.590 に答える
0

このように共有変数を使用するのは正しいですか?

通常、メソッドのペアではなく、Propertyを介してこれを行います。内部的には、プロパティは 2 つのメソッド (値を取得および設定するための getter メソッドと setter メソッド、および必要な追加のロジック) だけですが、変数自体に「似ている」ため、使用が簡単になります。

于 2013-09-24T18:47:02.150 に答える