23

次の自動プロパティがあります

[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; }

コード内で使用しようとすると、デフォルトの false が見つかりました。falseこれは、変数のデフォルト値であると想定していますbool。何が問題なのか、誰にも手がかりがあります!?

4

3 に答える 3

38

DefaultValue 属性は、Visual Studio デザイナ (フォームのデザイン時など) にプロパティの既定値を伝えるためにのみ使用されます。コードで属性の実際のデフォルト値を設定しません。

詳細はこちら: http://support.microsoft.com/kb/311339

于 2009-12-30T14:45:33.883 に答える
17

[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;
于 2009-12-30T14:46:58.933 に答える