Лучший способ инициализировать переменные класса в Unity

После нескольких лет C++ я погружаюсь в другой язык (C#) с Unity. Я делаю задание для первого класса. У моего профессора есть некоторые переменные, объявленные как частные, но она инициализирует их сразу после объявления. В C++ мы никогда не инициализируем закрытый элемент данных не в частном блоке, а в конструкторе. Из того, что я прочитал, мы не должны использовать конструкторы в классах, производных от MonoBehaviour. Итак, мой вопрос:

Можно ли инициализировать частные объекты (строки, целые числа и т. д.) при объявлении в классе на С#? Или это то, что мы не должны делать, как в C++, и они должны быть инициализированы в другом месте?


person joe_04_04    schedule 25.08.2017    source источник


Ответы (2)


Я не думаю, что на ваш вопрос есть прямой ответ, скорее, это хорошая практика.

Во-первых, C# автоматически присваивает значение по умолчанию распространенным типам (int > 0, char > 0 ('\0'), float 0.0f, null для ссылочного типа,...), поэтому вам не нужно инициализировать эти если у вас нет определенного поведения, которое включает определенное начальное значение (например, придание максимального значения int, предназначенному для функции, возвращающей минимальное значение). Это свойство распространяется на структуры (структура, содержащая int и строку, будет автоматически инициализирована до 0 и null для этих полей).

Для ссылочных типов и вообще всего, что требует пользовательского выделения/инициализации, я обычно делаю все это, если возможно, в конструкторе, потому что, да, именно для этого они созданы, делая ваш объект готовым к использованию для внешних пользователей. .

В случае с Unity инициализация в Start() тоже должна быть хорошей.

Ваш профессорский путь, конечно, приемлем. Еще немного информации: Инициализация - Stack Overflow

person Kinxil    schedule 25.08.2017

Да, это действительно хорошо, но также возможно инициализировать его в методе Start(), если они реализуют MonoBehaviour

person Nico Bartokos    schedule 25.08.2017