c# - operator - ¿Por qué el tipo "int" nunca es igual a "nulo"?
operador null c# (8)
int n == 0;
if (n == null)
{
Console.WriteLine("......");
}
¿Es cierto que el resultado de la expresión ( n == null
) es siempre false
desde
un valor de tipo int
nunca es igual a null
de tipo int?
(ver advertencia a continuación)
Advertencia CS0472 El resultado de la expresión es siempre ''falso'' ya que un valor de tipo ''int'' nunca es igual a ''nulo'' de tipo ''int'' ''
El uso de NULL se aplica a Punteros y referencias en general. Un valor 0 asignado a un entero no es nulo. Sin embargo, si puede asignar un puntero al entero y asignarlo a NULL, la declaración es válida.
Para resumir =>
/*Use the keyword ''null'' while assigning it to pointers and references. Use 0 for integers.*/
En C # no se permite usar una variable no inicializada.
Asi que
int i;
Console.Writeline(i);
Resultados en un error de compilación.
Puede inicializar int con nuevos como:
int anInt = new int();
Esto dará como resultado el valor predeterminado para int, que es 0. En los casos en los que desee tener un int
genérico, puede hacer que el int nullable con la sintaxis
int? nullableInt = null;
En pocas palabras, un int es un elemento muy básico. Es pequeño y simple para que pueda manejarse rápidamente. Se maneja como el valor directamente, no a lo largo del modelo de objeto / puntero. Como tal, no hay ningún valor legal "NULO" para que tenga. Simplemente contiene lo que contiene. 0 significa a 0. A diferencia de un puntero, donde es 0 sería NULL. Un objeto que almacena un 0 tendría un puntero distinto de cero.
Si tiene la oportunidad, tómese el tiempo para hacer algún trabajo de ensamblaje o de la vieja escuela, se volverá mucho más claro.
Los "tipos de valor" en .NET (como int, double y bool) no pueden, por definición, ser nulos: siempre tienen un valor real asignado. Para una buena introducción a los tipos de valor frente a los tipos de referencia, consulte http://www.albahari.com/valuevsreftypes.aspx
No, porque int
es un tipo de valor. int
es un tipo de Value
como Date
, double
, etc. Por lo tanto, no hay manera de asignar un valor null
.
Porque int
es un tipo de valor en lugar de un tipo de referencia. La especificación del lenguaje C # no permite que un int
contenga nulo. Intenta compilar esta declaración:
int x = null ;
y mira lo que obtienes
Obtiene la advertencia del compilador porque es una prueba inútil y el compilador lo sabe.
Si desea que su variable entera permita valores nulos, declare que es un tipo que admite nulos:
int? n = 0;
Tenga en cuenta el ?
después de int, lo que significa que el tipo puede tener el valor null
. Los tipos anulables se introdujeron con la versión 2.0 de .NET Framework.
public static int? n { get; set; } = null;
O
public static Nullable<int> n { get; set; }
o
public static int? n = null;
o
public static int? n
o solo
public static int? n { get; set; }
static void Main(string[] args)
{
Console.WriteLine(n == null);
//you also can check using
Console.WriteLine(n.HasValue);
Console.ReadKey();
}
La palabra clave null es un literal que representa una referencia nula, una que no se refiere a ningún objeto. En la programación, los tipos anulables son una característica del sistema de tipos de algunos lenguajes de programación que permiten que el valor se establezca en el valor especial NULL en lugar de los valores posibles usuales del tipo de datos.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/null https://en.wikipedia.org/wiki/Null