Existem erros aqui e informações não verdadeiras, exemplo:
A linha
Int num = (int) "1" ;
além do tipo inválido isso não funciona, o cast é referente ao tipo de dado se você fizer isso o erro será:
Compilation error (line 17, col 13): Cannot convert type ‘string’ to ‘int’
porque o dado tipo não é inteiro e sim um texto, cast
é sobre o tipo de dado não é a intenção.
Correto:
public class Program
{
public static void Main()
{
if (int.TryParse("1", out int c))
{
System.Console.WriteLine(c);
}
}
}
ou seja, o TryParse
tem o fator de dizer se a conversão deu certo (true/false
) e também exponha o valor para utilização posterior.
Essa é a melhor forma de converter e não ter exceção na sua aplicação.
O Convert
também funciona mas, o valor realmente precisa ser o tipo que você quer, exemplo:
Functiona:
public class Program
{
public static void Main()
{
int i = System.Convert.ToInt32("1");
System.Console.WriteLine(i);
}
}
Exceção
public class Program
{
public static void Main()
{
int i = System.Convert.ToInt32("");
System.Console.WriteLine(i);
}
}
Unhandled exception. System.FormatException: Input string was not in a correct format.
at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
at System.Number.ParseInt32(ReadOnlySpan`1 value, NumberStyles styles, NumberFormatInfo info)
at System.Convert.ToInt32(String value)
at Program.Main()
Command terminated by signal 6
Ou seja, a sua resposta de um modo geral é inválida, não diz o correto e confunde mais do que ajuda.
Sobre Cast, exemplo válido:
public class Program
{
public static void Main()
{
object c = 1;
int d = (int)c;
System.Console.WriteLine(d);
}
}
O cast
é sobre o valor contido em um object
e a sua conversão é explicita, isso funciona porque o object
c
é um tipo inteiro e todas os tipos herdam de objeto por isso nesse caso funciona.
Se ficou alguma duvida @xsilva99 pode pergunta!