Eu vi o uso várias vezes, mas não conseguir entender o que é exatamente e onde procurei sobre, as respostas eram muito confusas.
Eu vi o uso várias vezes, mas não conseguir entender o que é exatamente e onde procurei sobre, as respostas eram muito confusas.
Isso acontece pq na hora de executar será executado passo a passo.
Se vc tem:
double x; x = 3 / 2;
a primeira coisa que ele vai fazer é dividir o 3 por 2, ele nem vai verificar onde vai armazenar, como o 3 e o 2 são int, o resultado será um int, depois ele vai atribuir a x um valor, desta forma ele vai converter o resultado (1) pra double e armazenar em x na memória.
Se a intenção fosse uma divisão inteira de x / 2, teria que ser feito em uma variável separada, se não converteria direto.
Essa lógica de converter tudo direto, não seria possível usar o cast, o que seria um problema para pegar o que tem depois da virgula (double) de um número.
Só pra confirmar se entendi, quando coloco a interrogação no cast ele vai executar passo a passo e realizar a conversão na hora do retorno?
Sim. Mas especificamente o '?' informa que pode receber valores nulos.
exemplo de código
using System; using static System.Console;
public class Program { public static void Main() { int? nullable1 = null; int? nullable2 = 10;
if(nullable1.HasValue)
WriteLine(nullable1);
if(nullable2.HasValue)
{
WriteLine(nullable2);
WriteLine(nullable2.Value);
}
}
}
Entedi, muito obrigado