Инициализация переменных в 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