La inicialización de variables en C# es otro ejemplo del énfasis de C# en la seguridad. En pocas palabras, el compilador de C# requiere que una variable se inicialice con algún valor inicial antes de poder referenciarla en una operación. La mayoría de los compiladores modernos marcan la falta de inicialización como una advertencia, pero el compilador de C# lo trata como un error. Esto evita que obtengamos accidentalmente valores basura de la memoria que dejaron otros programas.

En la inicialización de variables de C#, hay dos métodos para garantizar que una variable se inicialice antes de usarse:

  • Si la variable es un campo de una clase o estructura y no se inicializa explícitamente, al crear estas variables su valor predeterminado es0(Las clases y estructuras se discuten más adelante).
  • Las variables locales de un método deben inicializarse explícitamente en el código antes de que sus valores puedan usarse en las declaraciones. En este caso, la inicialización no se realiza al declarar la variable, pero el compilador examina todas las rutas posibles del método y, si detecta que una variable local se usa antes de su inicialización, generará un error.

El enfoque de C# es opuesto al de C++. En C++, el compilador deja que el programador se asegure de que las variables se inicialicen antes de usarse. En Visual Basic, todas las variables se establecen automáticamente en0。

Análisis de ejemplos de inicialización de variables en C#

Por ejemplo, en C# no se puede utilizar la siguiente declaración:

public static int Main(){ int d; Console.WriteLine(d); // ¡Error! Debe inicializarse antes de usarse }

Observa que en este código se demuestra cómo definir Main() para que devuelva un dato de tipo int, en lugar de void.

Al compilar este código, se obtendrá el siguiente mensaje de error:

Use of unassigned local variable 'd' 

Considere la siguiente declaración:

Something objSomething; 

En C++, el código anterior creará una instancia de la clase Something en la pila (stack). En C#, esta línea de código solo crea una referencia para el objeto Something, pero esa referencia aún no apunta a ningún objeto. Llamar a un método o propiedad de esa variable provocará un error.

En C#, para instanciar un objeto de referencia se necesita utilizar la palabra clave new. Como se mencionó anteriormente, al crear una referencia, se usa la palabra clave new para que esa referencia apunte a un objeto almacenado en el montón (heap):

objSomething = new Something();  

Dirección original: https://www.cnblogs.com/shiguangshuo/p/4842144.html