4

vb.netでオブジェクトのインスタンスを宣言するベストプラクティスは何ですか?

Person1 を Person = new Person() として薄暗くする

また

Person1 を new Person() として暗くする

4

1 に答える 1

5

両者に違いはありません。C# には構文に相当するものがないAs Newため、C# プログラマーが無知から、または単に慣れから最初のオプションを選択することがよくあります。

ただし、変数をインターフェイスまたは基本クラスとして型指定する場合など、型を指定する必要がある場合があります。

Dim person1 As IPerson = New Person()

または

Dim person1 As PersonBase = New Student()

As Newまた、この構文は V​​B6 にも存在していましたが、意味が少し異なっていたことにも言及する価値があります。.NET ではAs New、変数の開始値を設定します。VB6では、変数を「自動インスタンス化」しました。VB6 では、変数を宣言すると、As New変数が と等しい場合にその変数を使用するたびに、新しいオブジェクトが自動的にインスタンス化されますNothing。例えば:

'This is VB6, not VB.NET
Dim person1 As New Person
MsgBox person1.Name  ' person1 is set to a new Person object because it is currently Nothing
Set person1 = Nothing
MsgBox person1.Name  ' person1 is set to a second new Person object because it is currently Nothing

VB.NET では、それは行われません。VB.NET では、変数を に設定すると、別の値にNothing設定するまでその状態が維持されます。たとえば、次のようになります。

'This is VB.NET
Dim person1 As New Person()  ' person1 is immediately set to a new Person object
MessageBox.Show(person1.Name)
person1 = Nothing
MessageBox.Show(person1.Name)   ' Throws an exception because person1 is Nothing
于 2013-11-08T14:58:49.977 に答える