Каждый раз, когда вы создаете тип в C #, он автоматически заполняется дополненными нулями. В случае класса (ссылочного типа) это равняется нулевому указателю. Итак, технически, когда вы работаете с классами, следующее идентично:
MyClass class;
MyClass class2 = null;
Для типов значений (любая структура, включая int / float / double / и т. Д.) Тип передается с нулями, поэтому следующие значения эквивалентны:
int i;
int j = 0;
Однако в методе компилятор проверяет, присвоили ли вы значение вашим типам до его использования. Если вы сделаете следующее, компилятор пожалуется:
int i;
Console.WriteLine{"{0}",i);
Технически, вышесказанное должно быть в порядке - но поскольку это распространенный источник ошибок программиста, компилятор специально проверяет наличие неназначенных локальных переменных и жалуется. Однако это жалоба во время компиляции, а не проблема CLR. Вы можете сделать IL, который выполняет вышеприведенное, и он работает нормально.