6 ответов:
Вам гарантирована некоторая разновидность инициализации. Для любого статического элемента или экземпляра все переменные автоматически инициализируются при построении типа или экземпляра, явно или неявно (в этом случае
default(Type)является значением, поэтому 0 для числовых типов,nullдля строк и других ссылочных типов и т. д.).Для локальных переменных они не могут использоваться до объявления, поэтому, если вы можете проверить его, он был инициализирован.
Да, вы можете.
Для типов, которым требуются экземпляры (строки или массивы, как вы просили), можно проверить, являются ли они null.
Вы можете сделать это многими способами, но один из них:
if (myObject == null) { //initialize it here }Примитивные типы данных не требуют создания экземпляров. Например:
Int i;
Не будет равно нулю, оно будет равно 0.
C# требует, чтобы все переменные были инициализированы до некоторого значения перед их чтением.
Блок кода:
int i; if(i == 0) { // something... }Вызовет ошибку времени компиляции, поскольку вы пытаетесь получить доступ к значению
iперед его назначением. Это также относится к объектам (хотя для начала их можно инициализировать вnull).Если вы хотите знать, изменились ли вы с вашего первоначального задания, то нет, нет способа сказать это напрямую, если только начальное задание не было изменено. присвоение относится к значению sentinel, которое не будет повторено последующим присвоением. Если это не так, вам понадобится дополнительный
boolдля отслеживания.
Нет. Однако если это локальная переменная, то вы получите ошибку компилятора. Если это член класса, то он автоматически инициализируется по умолчанию (0 для ints, null для объектов и т. д.)
язык в щеку, но точный ответ
Просканируйте исходный код и найдите все способы использования и объявления переменной, чтобы убедиться, что она инициализирована либо при объявлении, либо где-то еще, прежде чем использовать ее.
Comments