¿Cuál es la diferencia entre 'int?' e 'int' en C #?

84

Estoy 90% seguro de que vi esta respuesta en stackoverflow antes, de hecho, nunca había visto el "int?" sintaxis antes de verla aquí, pero no importa cómo busque, no puedo encontrar la publicación anterior y me está volviendo loco.

Es posible que me haya estado comiendo los divertidos hongos por accidente, pero si no lo estoy, ¿alguien puede señalar la publicación anterior si puede encontrarla o volver a explicarla? Mi stackoverflow search-fu es aparentemente demasiado bajo ...

cori
fuente

Respuestas:

123

¿En t? es la abreviatura de Nullable<int>.

Esta puede ser la publicación que estabas buscando.

Punto y coma olvidado
fuente
24

¿En t? es lo mismo que Nullable. Le permite tener valores "nulos" en su int.

Charles Graham
fuente
7

int pertenece a System.ValueType y no puede tener un valor nulo. Cuando se trata de bases de datos u otros tipos en los que los elementos pueden tener un valor nulo, puede resultar útil comprobar si el elemento es nulo. Eso es cuando int? entra en juego. ¿En t? es un tipo que acepta valores NULL que puede tener valores que van desde -2147483648 a 2147483648 y nulo.

Referencia: https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

Krishnaveni B
fuente
0

el símbolo ? después del int significa que puede ser anulable.

Los ? El símbolo generalmente se usa en situaciones en las que la variable puede aceptar un nulo o un entero o, alternativamente, devolver un entero o un nulo.

Espero que el contexto de uso ayude. De esta manera, no está restringido a tratar únicamente con números enteros.

sanmatrix
fuente
0

puede usarlo cuando espera un valor nulo en su entero, especialmente cuando usa CASTING ex:

x= (int)y;

si y = nulo, tendrá un error. tienes que usar:

x = (int?)y;
Mohammad Taher Assad
fuente
0

Int no puede aceptar nulo, pero si el desarrollador usa int? luego almacena nulo en int como int i = null; // no acepta int? i = nulo; // su trabajo se usa principalmente para la paginación en MVC Pagelist

Fahad Jamal uddin
fuente
Esto parece decir lo mismo que la otra respuesta.
JJJ