Я только что попробовал небольшой фрагмент кода, чтобы увидеть, как работает инициализация типа значения. Ниже приведен фрагмент кода
public MainWindow()
{
InitializeComponent();
int num;
char alpha;
//if (num == null)
//{
// // this is null
//}
//else
//{
// string value = num.ToString();
//}
}
Некоторые коды намеренно закомментированы для правильной сборки проекта. Предстоящая компиляция была
Use of unassigned local variable 'num'
Я знаю, что все переменные должны быть назначены перед использованием. Но когда я отладил это, я обнаружил, что num имеет значение 0. Если это значение по умолчанию инициализировано до 0, то почему нам нужно всегда присваивать какое-то значение перед его использованием.
Если бы это был тип nullable
, я понимаю риск использования неназначенной переменной, которая будет через исключение.
Теперь предположим, что я хочу использовать нулевое значение num, которое уже доступно без какого-либо присвоения, почему мне обязательно инициализировать num?
Кто-то может сказать, что так работает .NET/C#. Но для этого должна быть какая-то веская причина. Не могли бы вы сказать эту причину?