2016-04-05 2 views

答えて

0

この場合、ref1とref2は同じオブジェクトを参照するポインタです。

例:ref2のプロパティを変更した場合、ref1に影響します。

2

最初のクラスはクラスを作成し、そのクラスへの参照を変数ref1に渡します。変数は値であり、値にはオブジェクトへの参照が含まれます。

2番目の例では、新しい変数を作成し、最初の変数の参照の値を渡します。あなたはあなたに

ClassName ref2 = ref1; 

を経由して、次に割り当てるとき

は要するに、両方の変数は、彼らが同じインスタンスになり、同じオブジェクトへの参照を保持します。 ref1の値を変更すると、ref2の値も変更され、ref2の値も変更されます。

あなたは2つの異なるオブジェクトをしたいのであれば、あなたは、このようにそれらを割り当てる必要があります。

ClassName ref1 = new ClassName(); 
ClassName ref2 = new ClassName(); 

新しいキーワードは、メモリ内にあなたのための新しいオブジェクトを作成します。

+1

あなたは正しいです、私はその本当の素早く編集するつもりです。私はちょっとclassキーワードを無視しています... – LeoReentry

0

ref1とref2の記述が同じであり、参照によって同じojbectを指している場合は、ref1を使用して何かを変更すると、これらの変更はref2にも表示されます。指しているだけですref1 This article should give the full story

0

これは同じポインタです。 ref1の変更はref2に表示されます。このため

http://csharppad.com/gist/ce30f0ae1a1d73bdf3ceec9e1e30b0cf

とコード:

class test { 
    public int IntProperty { get; set; } 
} 
var ref1 = new test { 
    IntProperty = 12 
}; 
var ref2 = ref1; 
Console.WriteLine(ref1.IntProperty); 
Console.WriteLine(ref2.IntProperty); 
ref1.IntProperty = 15; 
Console.WriteLine(ref1.IntProperty); 
Console.WriteLine(ref2.IntProperty); 

と結果:

12 
12 
15 
15 
関連する問題