Afzaal Ahmad Zeeshan
Помимо того, что Джон предложил в решении 1, пожалуйста, Также прочитайте о типах значений и ссылочных типах в контексте .NET framework. В этом контексте, если разработчик оставляет шаг инициализации и выполняет только объявление, присваивается значение по умолчанию — что очевидно. Я не эксперт, но я думаю, что это поведение имеет корни в C/C++, где 0 означает false, а нулевой указатель был (в очень старые времена) нулевым значением. Итак, чтобы убедиться, что все по умолчанию одинаково. Подобный этому,
int a = 0;
if(a) {
// This should not be executed.
} else {
// Should execute
}
Проверьте это здесь,
Оболочка C++ [
^]
Однако, поскольку C# является управляемым языком, он не допускает этих блоков и всегда требует выражения, которое преобразуется в логическое значение, если операнд не является логическим.
Я хочу сказать, что каждый предмет должен иметь что-то. Если объект имеет ссылочный тип, то он будет
null
; который является значением по умолчанию для ссылочных типов, таких как
string
.
О, и C# также поддерживает a
default
и присвоение ценностей тоже. Подобный этому,
int a = default(int);
// Same as
int a = new int();
int a = 0;
int a;
Это всего лишь личный выбор и предпочтения. :-)
Таблица значений по умолчанию (ссылка на C#) | Microsoft Docs[
^]
Типы значений и ссылочные типы | Microsoft Docs[
^]
О, И да, именно компилятор делает все это — если вы действительно не хотите копаться глубже в CLR и видеть IL C#. :смеяться: