2016-10-02 5 views
1

私は何を意味するか説明しましょう。私はオブジェクトC#では、オブジェクトのプロパティを参照するにはどうすればよいですか?

public class Foo 
{ 
    public int Val { get; set; } 
} 

と別の

mybar.Reference = null; 
を設定一時のは、私が

Bar mybar = new Bar() { Reference = new Foo() { Val = 69 } } 

を持っていると言うと、私はにしたい

public class Bar { public Foo Reference { get; set; } } 

などを持っていると言います0

これまでの設定に戻します。まあ、私はnullに上記セットtempの2行ので

var temp = mybar.Reference; 
mybar.Reference = null; 
mybar.Reference = temp; 

を行うことはできません。だから私は何をしようとしているのですか?

+0

からtempから「メモリアドレス」、「上記のセットの一時のライン2は、NULLにあるため、」 - 何? - 'mybar.Reference = null;'は 'temp'の値を変更できません。表示される動作を示す[MCVE]を提供してください。 –

答えて

1

いいえ、あなたはそれを行うことができ、それは動作します。

参照タイプは、Fooであるため、実際のオブジェクトへの「参照」のみが含まれています。そのため、プロパティBar.Referenceには、実際のオブジェクトのメモリアドレスがFooになります。

あなたのコード:上記

var temp = mybar.Reference; 

コードは変数tempに "メモリアドレス/リファレンス" をコピーします。
tempmybar.Referenceの両方がメモリ内の同じオブジェクトを指しています。

mybar.Reference = null; 

コードは、上記の今mybar.Reference「どこ」を指していない、mybar.Referencenull変数設定されますが、予告、tempはまだあなたの元のオブジェクトへの参照を持っていること。

mybar.Reference = temp; 

最終ラインのコピーバックmybar.Reference

関連する問題