Инициализация переменных в C# — ещё один пример того, как C# уделяет внимание безопасности. Проще говоря, компилятор C# требует, чтобы переменная была инициализирована некоторым начальным значением, прежде чем на неё можно будет ссылаться в операции. Большинство современных компиляторов помечают неинициализированные переменные как предупреждения, но компилятор C# рассматривает это как ошибку. Это не позволяет нам случайно подхватить мусорные значения из памяти, оставшейся от других программ.
В инициализации переменных C# есть два метода, гарантирующих, что переменная инициализируется до её использования:
- Если переменная является полем класса или структуры и явно не инициализирована, при создании переменной её значение устанавливается в значение по умолчанию:0(Классы и структуры рассматриваются позже.)
- Локальные переменные метода должны быть явно инициализированы в коде, прежде чем их значения можно будет использовать в операторах. В этом случае инициализация не выполняется при объявлении переменной, но компилятор проверяет все возможные пути выполнения метода и, если обнаруживает, что значение локальной переменной используется до инициализации, выдаёт ошибку.
Подход C# противоположен подходу C++. В C++ компилятор предоставляет программисту самому обеспечивать инициализацию переменных перед использованием, тогда как в Visual Basic все переменные автоматически получают значения, установленные в0。
Анализ примеров инициализации переменных в C#
Например, в C# следующую инструкцию нельзя использовать:
public static int Main(){ int d; Console.WriteLine(d); // Ошибка! Переменная должна быть инициализирована перед использованием }Обратите внимание, что этот код демонстрирует, как определить Main() так, чтобы он возвращал данные типа int вместо void.
При компиляции этого кода вы получите следующее сообщение об ошибке:
Use of unassigned local variable 'd'
Рассмотрим следующую инструкцию:
Something objSomething;
В C++ приведённый выше код создаёт экземпляр класса Something в стеке. В C# эта строка кода лишь создаёт ссылку для объекта Something, но эта ссылка пока не указывает ни на какой объект. Вызов метода или свойства для этой переменной приведёт к ошибке.
Чтобы создать экземпляр ссылочного объекта в C#, нужно использовать ключевое слово new. Как упоминалось выше, создайте ссылку и используйте ключевое слово new, чтобы направить эту ссылку на объект, хранящийся в куче:
objSomething = new Something();
Исходный URL: https://www.cnblogs.com/shiguangshuo/p/4842144.html