public List<string> MembershipIds
{
get;
set;
} = new List<string>();
にC#6.0のデフォルトpropertyvaluesを変換し、私は無効なトークンは、C#5.0
"=" クラスでは、構造体またはインターフェイスメンバー宣言を得ました。
これはC#6の機能です。それをC#5に変換するには?
public List<string> MembershipIds
{
get;
set;
} = new List<string>();
にC#6.0のデフォルトpropertyvaluesを変換し、私は無効なトークンは、C#5.0
"=" クラスでは、構造体またはインターフェイスメンバー宣言を得ました。
これはC#6の機能です。それをC#5に変換するには?
簡単な方法はありませんオートプロパティをそのまま残しておきます。あなたは自動プロパティを必要とした場合は
private List<string> membershipIds = new List<string>();
public List<string> MembershipIds {
get { return membershipIds; }
set { membershipIds = value; }
}
は、あなたが割り当てを行う必要があります。あなたは自動プロパティを必要としない場合は
は、プライベート変数と非自動プロパティを使用してコードを変換します
public List<string> MembershipIds { get;set; }
...
// This constructor will do the assignment.
// If you do not plan to publish no-argument constructor,
// it's OK to make it private.
public MyClass() {
MembershipIds = new List<string>();
}
// All other constructors will call the no-arg constructor
public MyClass(int arg) : this() {// Call the no-arg constructor
.. // do other things
}
public MyClass(string arg) : this() {// Call the no-arg constructor
.. // do other things
}
この機能は、プロパティとそれがコンストラクタごclass
のに割り当て一部を挿入されないためデフォルト値と呼ばれています。
次にコードを変更すると、あなたのコンストラクタのすべてを変更する必要がなく、そのプロパティのバッキングフィールドに同じことを行い、それがC#5.0でサポートされています。
private List<string> mMembershipIds = new List<string>();
public List<string> MembershipIds
{
get
{
return mMembershipIds;
}
set
{
mMembershipIds = value;
}
}
アップウィジェットは、「自動プロパティが必要なのはなぜですか? –
'this()'の連鎖には構文的な修正が必要です。 –
@JeppeStigNielsenありがとう、私は今朝Javaモードに切り替えました!私は、オートプロパティが必要な唯一のケースは、その使用を必要とする企業全体のコーディング標準がある場合です。私は、変数+ get/setペアでの使用を要求する技術的理由を考えることはできません。 – dasblinkenlight