次の自動プロパティがあります
[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; }
コード内で使用しようとすると、デフォルトの false が見つかりました。false
これは、変数のデフォルト値であると想定していますbool
。何が問題なのか、誰にも手がかりがあります!?
次の自動プロパティがあります
[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; }
コード内で使用しようとすると、デフォルトの false が見つかりました。false
これは、変数のデフォルト値であると想定していますbool
。何が問題なのか、誰にも手がかりがあります!?
DefaultValue 属性は、Visual Studio デザイナ (フォームのデザイン時など) にプロパティの既定値を伝えるためにのみ使用されます。コードで属性の実際のデフォルト値を設定しません。
[DefaultValue]
は、(たとえば) シリアル化 API ( などXmlSerializer
) と一部の UI 要素 ( などPropertyGrid
) でのみ使用されます。値自体は設定されません。そのためにはコンストラクターを使用する必要があります。
public MyType()
{
RetrieveAllInfo = true;
}
またはフィールドを手動で設定します。つまり、自動的に実装されたプロパティを使用しません。
private bool retrieveAllInfo = true;
[DefaultValue(true)]
public bool RetrieveAllInfo {
get {return retrieveAllInfo; }
set {retrieveAllInfo = value; }
}
または、最新の C# バージョン (C# 6 以降) の場合:
[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; } = true;