Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Diferença da tipagem do método de ": int" para ": ?int"

Eu vi o uso várias vezes, mas não conseguir entender o que é exatamente e onde procurei sobre, as respostas eram muito confusas.

5 respostas

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?

solução!

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