11

注:これは、 VB.NET の C# プロパティの短縮形と同等の複製ではありませんか? . この質問は、VB の自動プロパティのゲッターとセッターで異なるアクセス権を持つ方法に関するものです。例: public getter と private setterその質問は、自動プロパティの構文に関するものです (この問題については触れていません)。


自動プロパティ (パブリックゲッターとプライベートセッター) を C# から VB.NETに変換しようとしています。

しかし、変換後、VB.NET はプライベート フィールドを保持しています。

C# コード

class DemoViewModel
{
    DemoViewModel (){  AddCommand = new RelayCommand(); }

    public ICommand AddCommand {get;private set;}
}

コードコンバーターからVB.NETに相当するものは

Class DemoViewModel
Private Sub New()
    AddCommand = New RelayCommand()
End Sub

Public Property AddCommand() As ICommand
    Get
        Return m_AddCommand
    End Get
    Private Set
        m_AddCommand = Value
    End Set
End Property
Private m_AddCommand As ICommand
End Class

VB.NET コードはプライベート バッキング フィールドを生成します。

ソース コード (C# など) でこのバック フィールドを取り除くことは可能ですか? どのように?

この機能がなければ、VB.NET ソースにはそのような冗長性がたくさんあります。

4

3 に答える 3

14

VB.NET を使用して、Get プロシージャと Set プロシージャに異なるアクセシビリティを指定する場合は、自動実装されたプロパティを使用できず、代わりに標準の、または拡張されたプロパティ構文を使用する必要があります。

MSDN を読む: https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/procedures/auto-implemented-properties


getter と setterが同じアクセシビリティを持っている場合、たとえば両方がPublicである場合、自動プロパティ構文を使用できます

Public Property Prop2 As String = "Empty"
于 2012-12-29T19:38:54.357 に答える