Normalmente, o principal uso do ponto de interrogação é para o condicional x ? "yes" : "no"
,.
Mas vi outro uso para ele, mas não consigo encontrar uma explicação sobre esse uso do ?
operador, por exemplo.
public int? myProperty
{
get;
set;
}
int
tipo e umaInteger
classe correspondente , por exemplo.É uma abreviação de
Nullable<int>
.Nullable<T>
é usado para permitir que um tipo de valor seja definido comonull
. Tipos de valor geralmente não podem ser nulos .fonte
value types
não pode ser nulo. Se você declarar um int ou um bool (que são tipos de valor) sem atribuir um valor especificamente, eles ainda terão valores (0 e false, respectivamente), ou seja. eles não seriam nulos.reference types
Por outro lado, não atribuído , como objeto ou MyClass, será nulo. Você pode ler sobre a diferença entre tipos de valor e tipos de referência.No
o ? declara uma sentença if . Aqui: x representa a condição booleana; A parte antes de : é a sentença then e a parte depois é a sentença else .
Por exemplo,
o ? declara um tipo anulável e significa que o tipo anterior a ele pode ter um valor nulo.
fonte
return value ? value : "isNull";
me diz questring value
não é convertível em bool.fonte
declara que o tipo é anulável.
fonte
uso prático:
fonte
Para adicionar as respostas acima, aqui está um exemplo de código
Isso daria um erro de compilação:
Observe que não há erro de compilação para NullableTest. (observe o? na declaração de t2)
fonte
int?
é uma abreviação deNullable<int>
. As duas formas são intercambiáveis.Nullable<T>
é um operador que você pode usar com um tipo de valorT
para fazê-lo aceitarnull
.No caso de você não sabe: valor tipos são tipos que aceita valores como
int
,bool
,char
etc ...Eles não podem aceitar referências a valores: eles gerariam um erro em tempo de compilação se você atribuir a eles um
null
, em oposição aos tipos de referência , que obviamente podem aceitá-lo.Por que você precisaria disso? Às vezes, suas variáveis de tipo de valor podem receber referências nulas retornadas por algo que não funcionou muito bem, como uma variável ausente ou indefinida retornada de um banco de dados.
Eu sugiro que você leia a documentação da Microsoft, pois cobre muito bem o assunto.
fonte