1

だからここに簡単なコードがあります:

    [System.ComponentModel.DefaultValue(true)]
    public bool AnyValue { get; set; }

AnyValue を再度 false に設定することはないと確信しています (作成したばかりです)。このプロパティは、ASP.NET の Page クラスのプロパティです。そして、ボタンイベント処理関数で値をチェックしています。しかし、どういうわけかそれはまだ間違っています。実際にいつtrueに設定されるのだろうか?コンパイル時?クラスはいつインスタンス化されますか?

私が間違っていることについてどう思いますか?

4

3 に答える 3

10

DefaultValue は値を設定しませ

それが行うことは、デフォルト値が何であるかを VisualStudio に伝えることです。フォームでビジュアル要素 (ボタン、リストボックスなど) が選択され、プロパティ パネルが表示されると、VS はDefaultValue で指定された値以外に設定されているプロパティの値を太字にします。

したがって、あなたの場合、AnyValue は false ですが、DefaultValue は true であるため、プロパティ パネルに太字でfalseが表示されます。手動で「true」に変更すると、太字で表示されなくなります。

于 2008-11-06T15:10:04.003 に答える
0

では、私が意図したようにデフォルト値を設定する最良の方法は何ですか?

これは私にとって良い方法のようです。

    private bool myVal = true;
    public bool MyVal
    {
        get { return myVal; } 
        set { myVal = value; }
    }
于 2008-11-06T15:23:22.497 に答える
0

すでに述べたように、値を設定しません。

に加えて、PropertyGridやなど[DefaultValue]のさまざまなシリアライザー実装でも使用されます。参考までに、2 番目のパターンもあります。それは 3 つすべてで尊重されます。XmlSerializerDataContractSerializerbool ShouldSerialize{Name}()

于 2008-11-06T22:04:43.823 に答える