Показать сообщение отдельно
Непрочитано 01.08.2017, 10:10   #1
Пользователь

Автор темы (Топик Стартер) Объекты передаются по ссылке! Или не совсем??!

Знали ли вы что :
Код:
        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. Короче кто шарит, может объяснить почему так? Ведь по идее все объекты передаются по ссылке а следовательно по тому адресу на который ссылается ссылка мы по идее вполне можем записать новый объект. А оказалось что это не так.

Последний раз редактировалось Alay; 01.08.2017 в 13:54.
Alay вне форума Ответить с цитированием
Сказали спасибо: