Знали ли вы что :
Код:
private class TestClass
{
public int Test;
}
private static void Main()
{
TestClass t = new TestClass();
t.Test = 15
Make(t);
Console.WriteLine(t.Test);
Console.ReadLine();
}
private static void Make(TestClass t)
{
++t.Test;
}
Выведет на консоль: 16.
НО
Код:
private class TestClass
{
public int Test;
}
private static void Main()
{
TestClass t = new TestClass();
t.Test = 15
Make(t);
Console.WriteLine(t.Test);
Console.ReadLine();
}
private static void Make(TestClass t)
{
t=new TestClass();
t.Test = 16;
}
Выведет на консоль: 15.
Это справедливо как для шарпа так и для java. Короче кто шарит, может объяснить почему так? Ведь по идее все объекты передаются по ссылке а следовательно по тому адресу на который ссылается ссылка мы по идее вполне можем записать новый объект. А оказалось что это не так.