0

これら 2 つのスニペットの違いは何ですか?

Public Property UserName As String

Public Property User As String
    Get
        Return _User
    End Get
    Set(ByVal value As String)
        _User = value
    End Set
End Property

これが重複またはばかげた質問である場合は申し訳ありません。私は VB.NET には慣れていません。C# に慣れています。これを C# に翻訳しようとしていますが、間違いの余地はありません。

4

4 に答える 4

4

_User最初のもの (自動実装されたプロパティ) は自動的にバッキング フィールドを作成するので、2 番目の例のように自分自身を宣言する必要はありません。

MSDNから:

自動実装プロパティを宣言すると、Visual Basic は、バッキング フィールドと呼ばれる非表示のプライベート フィールドを自動的に作成して、プロパティ値を格納します。バッキング フィールド名は、自動実装されたプロパティ名の前にアンダースコア (_) を付けたものです。たとえば、ID という名前の自動実装プロパティを宣言すると、バッキング フィールドの名前は _ID になります。

于 2012-08-29T14:11:16.513 に答える
3

違いはありません。1 つ目は 2 つ目の短いバージョンです。

しかし、セッターを制限したり、変数を取得/設定するよりもプロパティで何かをしたい場合は、2 番目のバージョンを使用する必要があります。

だからそれは(C#で)と同じです

public string UserName { get; set; }

自動実装プロパティ (Visual Basic)

自動実装プロパティ (C# プログラミング ガイド)

于 2012-08-29T14:11:19.463 に答える
1

それらの1つは短いです:)

最初のケースでは、バッキング フィールドを表示または使用できないことを除いて、2 番目のケースと同じことを行う、自動的に実装されたプロパティです。

ちなみに、C#に相当するものは次のとおりです。

public string UserName { get; set; }
于 2012-08-29T14:10:51.903 に答える
1

これは、自動的に実装されたプロパティの VB バージョンです

したがって、C# に相当するものは次のようになります。

public string UserName { get; set; }

VB では、自動的に実装されたプロパティの既定値を使用できますが、C# では使用できないことに注意してください。コンストラクターでプロパティを既定値に設定する必要があります。

于 2012-08-29T14:10:59.053 に答える