C# の自動プロパティに初期値を与えるにはどうすればよいでしょうか?
コンストラクターを使用するか、古い構文に戻します。
コンストラクターの使用:
class Person
{
public Person()
{
Name = "Initial Name";
}
public string Name { get; set; }
}
通常のプロパティ構文を使用する(初期値付き)
private string name = "Initial Name";
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
もっと良い方法はあるでしょうか?
ベストアンサー1
C# 5 以前では、自動実装プロパティに初期値を与えるには、コンストラクターで行う必要があります。
以来C# 6.0初期値をインラインで指定できます。構文は次のとおりです。
public int X { get; set; } = x; // C# 6 or higher
DefaultValueAttribute
VS デザイナー (またはその他のコンシューマー) が初期値ではなくデフォルト値を指定するために使用することを目的としています。(設計されたオブジェクトであっても、初期値はデフォルト値です)。
コンパイル時にはDefaultValueAttribute
生成されたILには影響せず、プロパティをその値に初期化するために読み込まれることはありません(DefaultValue 属性が自動プロパティで動作しない)。
ILに影響を与える属性の例は以下のとおりです。ThreadStaticAttribute
、CallerMemberNameAttribute
、...