Возник один вопрос по игровому движку Unity. Допустим я хочу создать экземпляр класса Camera.
Camera cam = New Camera();
Но в некоторых справках и уроках люди просто пишут:
Camera cam;
Поиск по интернету вывел меня на официальную документацию, где написано:
you can create an object reference without creating an object at all: Customer object2;
То есть получается, что во втором случае я создаю ссылку на объект Camera, а не экземпляр класса. Если рассуждение верно, то я могу создать две ссылки на один объект, допустим:
Camera Testcam1;
Camera Testcam2;
И если я присвою одной ссылке значение, то вторая тоже должна изменится так, как они ссылаются на один объект. Но этого не происходит.
Testcam1 = Camera.main;
Debug.Log(Testcam2);
Debug.Log(Testcam1);
В консоль выводится сообщение что Testcam2 имеет Null, а Testcam1 получает значение камеры. Возможно, я тоже должен что-то присвоить второй ссылке, прежде чем у неё появится значение. Но в любом случае, прошу помощи разъяснить мне, является такая вещь как Camera Testcam1;
- ссылкой на объект, либо чем то еще.
Вы абсолютно верно рассуждаете до этого момента
И если я присвою одной ссылке значение, то вторая тоже должна изменится так, как они ссылаются на один объект. Но этого не происходит.
Рассмотрим ситуацию
Camera Testcam1;
Camera Testcam2;
в данный момент обе ссылки пустые - null.
Если мы присвоем одной пустой ссылке, другую пустую ссылку и после этого изменим значений в одной из них:
Testcam1 = Testcam2;
Testcam2 = camera.Main;
//Testcam1 будет nul
//Testcam2 будет camera.Main
Testcam1 указывает на экземпляр класса, а Testcam2 продолжает быть пустой. Это связано с тем что хоть они оба и были null, это не было ссылкой на общий объект.
НО
Если после этого повторим:
Testcam1 = Testcam2;
//Testcam1 будет camera.Main
//Testcam2 будет тот же объект что и Testcam2
Объявление вида
Тип имя_переменной;
создает нулевую ссылку для ссылочных типов (классов) или переменную со значением по умолчанию для типов значений (структур), если является полем класса, иначе - неинициализированное значение.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Возникла задача отправлять email напрямую из программыПо мимо просто текста прикреплять файл лога к письму
Как выгрузить данные из databasebak в базу данных? Иcпользую ASP