で参照型と値型と奇妙な何かを発見した(少なくとも私に:-))私はデモの方法に取り組んでいたジェネリック
enter code here class Program
{
public void AnotherSwap<T>(T a, T b)
{
T temp;
temp = a;
a = b;
b = temp;
Console.WriteLine(a);
Console.WriteLine(b);
}
public void swap<T>(T a, T b) where T : MyInt // Passing without ref
{
object temp;
temp = a.MyProperty;
a.MyProperty = b.MyProperty;
b.MyProperty = (int)temp;
Console.WriteLine(a.MyProperty);
Console.WriteLine(b.MyProperty);
}
static void Main(string[] args)
{
Program p = new Program();
MyInt a = new MyInt() { MyProperty = 10 };
MyInt b = new MyInt() { MyProperty = 20 };
p.swap<MyInt>(a, b);
Console.WriteLine(a.MyProperty); // changed values get reflected
Console.WriteLine(b.MyProperty); // changed values get reflected
Console.WriteLine("Another Swap");
object x = 10;
object y = 20;
p.AnotherSwap(x, y);
Console.WriteLine(x); // changed values are not getting reflected
Console.WriteLine(y); // changed values are not getting reflected
Console.ReadKey();
}
public class MyInt
{
public int MyProperty { get; set; }
}
}
ここで私は私の避難所ものの、)(スワップを呼び出しています変更された値は自動的に反映されます(p.swap(a、b)のように); aとbはMyintのインスタンスなので、デフォルトではref ...と解釈されます) しかし同じAnotherswap()と一緒に起こるはずです。ここでもオブジェクトx、yを渡していますが、値はMain()に反映されません。現在は値型として動作しています。 誰かが私の理解が間違っているところを説明することができます。 もしあなたがもっと詳しい情報を知りたいのなら教えてください。
クリス、感謝します。 – Wondering