C#では、プライベート変数を宣言する必要なくプロパティを持つことができます。 このget;セット; C#の構文
'local variable(s) to hold property value(s)
Private mvarPhoneNumber As String 'local copy
Public Property Let PhoneNumber(ByVal vData As String)
'used when assigning a value to the property, on the left side of an assignment.
'Syntax: X.PhoneNumber = 5
mvarPhoneNumber = vData
End Property
Public Property Get PhoneNumber() As String
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.PhoneNumber
PhoneNumber = mvarPhoneNumber
End Property
のように見えた私のVB6のコードは次のように見ることができます。
public string PhoneNumber{get;set;}
C#のゲッターとセッターメソッドで検証を行うにはどうすればよいですか? このような検証を追加しようとしました。
public string PhoneNumber
{
get
{
return PhoneNumber;
}
set
{
if (value.Length <= 30)
{
PhoneNumber = value;
}
else
{
PhoneNumber = "EXCEEDS LENGTH";
}
}
}
このコードのget部分はコンパイルされません。 プライベート変数を使用する必要がありますか?
Andrew氏によると、プロパティのプライベート変数を作成する必要があります。 C#の自動プロパティ機能は実際にあなたのために舞台裏でこれを行いますが、そのようにプライベート変数にアクセスすることはできません。それを使って何かをするように明示的に宣言しなければなりません(例えば、それを検証するなど) – Chris
また、セッターでバッキングフィールドを設定するか、実行時にStackOverflowExceptionを実行します。 –
例のために単純化しているのかどうかは分かりませんが、ArgumentExceptionを投げるのではなく、盲目的にプロパティを新しい値に設定するのはかなり難しいようです。 –