実際、これは.NETでのオブジェクトの動作の標準的な方法です。どこかのオブジェクトがあります。あなたはオブジェクトへの参照を取得し、ローカル参照をnull
に設定すると、参照を保持する他のオブジェクトはそれに気付かないでしょう。
参照によって「指し示されている」ものを変更すると、実際のデータが変更され、誰もがそれを見るようになります!
例:
class MyObject { public int i; }
MyObject ref1 = new MyObject() { i = 100 };
MyObject ref2 = ref1; // ref2 is just another reference to the object
ref1 = null;
Console.WriteLine(ref2.i); // prints 100, the object is still alive
ref1 = ref2;
ref1.i = 50;
Console.WriteLine(ref2.i); // prints 50, the object is changed
それは静的リソースで行くのと同じ方法:あなたは、オブジェクトへの参照を取得し、あなたの参照をゼロならば、他の人がそれを言及しないように:彼らは別の参照を持っています。
おかげで私のようなコードを書くとき、今、これは、スタンダールbehavior.soです参照してください。 this.Resources [「yellowBrush」] = NULLを。 このリソースが静的な場合、変更はボタンの背景などに設定され、ブラシオブジェクトはまだそこにあるため反映されません。しかし、このリソースが動的であれば、変更が反映され、ボタンの背景色はnullになります。私の疑問とは逆に、ダイナミックな変化をどのように反映しているのでしょうか? – user1388106
@user:実際は、動的リソースと同じです。リソースを変更する場合は、そのリソースが存在するリソース辞書を検索し、その辞書を更新する必要があります。 – Vlad