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;
}
int
tipo y unaInteger
clase 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 types
no 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 value
no 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 valorT
para que aceptenull
.En caso de que no lo sepa: Valor tipos son tipos que acepta valores como
int
,bool
,char
etc ...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