Por lo general, el uso principal del signo de interrogación es para el condicional x ? "yes" : "no",.
Pero he visto otro uso para él, pero no puedo encontrar una explicación de este uso del ?operador, por ejemplo.
public int? myProperty
{
get;
set;
}

inttipo y unaIntegerclase correspondiente , por ejemplo.Es una abreviatura de
Nullable<int>.Nullable<T>se usa para permitir que se establezca un tipo de valornull. Los tipos de valor generalmente no pueden ser nulos .fuente
value typesno puede ser nulo. Si declara un int o un bool (que son tipos de valor) sin asignar específicamente un valor, todavía tendrían valores (0 y falso, respectivamente), es decir. No serían nulos. Sin asignarreference types, como object o MyClass, será, por otro lado, nulo. Es posible que desee leer sobre la diferencia entre los tipos de valor y los tipos de referencia.En
el ? declara una oración if . Aquí: x representa la condición booleana; La parte anterior a : es la oración then y la parte posterior es la oración else .
En, por ejemplo,
el ? declara un tipo anulable y significa que el tipo anterior puede tener un valor nulo.
fuente
return value ? value : "isNull";me dice questring valueno se puede convertir en bool.fuente
declara que el tipo es anulable.
fuente
uso práctico:
fuente
Para agregar a las respuestas anteriores, aquí hay un ejemplo de código
Esto daría un error de compilación:
Tenga en cuenta que no hay error de compilación para NullableTest. (tenga en cuenta el? en la declaración de t2)
fuente
int?es la abreviaturaNullable<int>. Las dos formas son intercambiables.Nullable<T>es un operador que puede usar con un tipo de valorTpara que aceptenull.En caso de que no lo sepa: Valor tipos son tipos que acepta valores como
int,bool,charetc ...No pueden aceptar referencias a valores: generarían un error en tiempo de compilación si les asigna un
null, a diferencia de los tipos de referencia , que obviamente pueden aceptarlo.¿Por qué necesitarías esto? Porque a veces sus variables de tipo de valor podrían recibir referencias nulas devueltas por algo que no funcionó muy bien, como una variable faltante o indefinida devuelta de una base de datos.
Le sugiero que lea la Documentación de Microsoft porque cubre el tema bastante bien.
fuente