2011-11-04 1 views
3

objの2つの初期化方法の違いは何ですか?私はこれらの両方を見てきましたが、どちらかを使用する適切な時間があるかどうかを知っています。私はこれを見つけましたpostはC#をカバーしますが、同じことがVB.Netに当てはまるかどうかはわかりません。VB.Netのクラスメンバーのこれら2つの初期化メソッドの違いは何ですか?

Public Class Class1 
    Sub New() 
    End Sub 

    Dim obj As New Object 
End Class 

事前に私の謝罪この重複場合

Public Class Class1 
    Sub New() 
     obj=New Object 
    End Sub 

    Dim obj As Object 
End Class 

対。

答えて

7

この場合、違いはありません。主な違いは、コンストラクタが他の操作を行う場合です。

この場合、インライン初期化(Dim obj As New Object)はコンストラクタ内のコードより前に発生します。コンストラクタに初期化を置くと、初期化の順序を選択できます。

2

これらのサンプルについては事実上何も変わりません。両方のケースでは、値

でに割り当てられている

  • フィールドobjと呼ばれるClass1ため

    • コンストラクタは、(この場合はObject
    • ベースのコンストラクタと呼ばれる操作の次の順序を取得しますすべての可能性が高いフードは、結果として、同一のILが生成される。

  • 1

    あなたの最初のバージョンは「宣言的」です。

    1. フィールドがどのように初期化されているかは、コンストラクタで調べる必要がないため、わかりやすくなります。
    2. コンストラクタが複数ある場合は、自分自身を繰り返す必要はありません。

    あなたの最初のバージョンは「必須」です。

    1. 作成時は正確に制御します。
    2. コンストラクタごとに異なるバージョンを持つことができます。

    私は可能な限り個人的に宣言的なスタイルのコードに個人的にデフォルトしています。

    +0

    本当に非常に役に立ちました。私ができるなら2倍upvoteだろう。 –

    関連する問題