1

次のコードがあります。

    private BindingList<Box> _boxesToDisplay;
    public BindingList<Box> BoxesToDisplay
    {
        get
        {
            return _boxesToDisplay;
        }
        set 
        {
            // Unhook the old one.  Just incase
            _boxesToDisplay.AddingNew -= NewItemAdded;
            // Set the new value
            _boxesToDisplay = value;
            // Hook in the value again.
            _boxesToDisplay.AddingNew += NewItemAdded;
        }
    }

しかし、私は考えるようになりました。これが代入演算子のオーバーロードであることが最善です。次に、彼らが実際にそれを行ったかどうか疑問に思いました。コードを次のように置き換えることができます。

     public BindingList<Box> BoxesToDisplay { get; set; }

本当ですか?これは:

     myClass.BoxesToDisplay = new BindingList<Box>();

のいずれかの定義でAddingNewイベントが設定されていますか?NewItemAdded()BoxesToDisplay

4

1 に答える 1

2

これは [...] BoxesToDisplay のいずれかの定義で、AddingNew イベントを NewItemAdded() に設定したままですか?

いいえ、参照を完全に置き換えて_boxesToDisplayいます。イベントハンドラを移植するメカニズムはありません。

私が言えることは、Auto-Imp プロパティを-=使用すると、他の何かがまだ古いインスタンスにアクセスできる可能性がないため、必要ないということです。ただし、新しいものに接続する必要があります。

于 2011-02-17T15:51:42.170 に答える