Usando operadores de conversão (Guia de Programação em C#)
Você pode usar os operadores de conversão de implicit , que são mais fácil de usar, ou os operadores de conversão de explicit , que indicam claramente a qualquer um que lê o código que você está convertendo um tipo. Este tópico demonstra ambos os tipos de operador de conversão.
Dica
Para obter informações sobre as conversões de tipo simples, consulte Como converter uma cadeia de caracteres em um número (Guia de Programação em C#), Como converter uma matriz de bytes em um int (Guia de Programação em C#), Como converter entre cadeias de caracteres hexadecimais e tipos numéricos (Guia de Programação em C#), ou Convert.
Exemplo
Este é um exemplo de um operador de conversão explícita. Este operador converte-se de tipo Byte a um tipo de valor chamado Digit. Porque nem todos os bytes podem ser convertidos em um dígito, a conversão explícita é, o que significa que uma conversão deve ser usada, conforme mostrado no método de Main .
struct Digit
{
byte value;
public Digit(byte value) //constructor
{
if (value > 9)
{
throw new System.ArgumentException();
}
this.value = value;
}
public static explicit operator Digit(byte b) // explicit byte to digit conversion operator
{
Digit d = new Digit(b); // explicit conversion
System.Console.WriteLine("Conversion occurred.");
return d;
}
}
class TestExplicitConversion
{
static void Main()
{
try
{
byte b = 3;
Digit d = (Digit)b; // explicit conversion
}
catch (System.Exception e)
{
System.Console.WriteLine("{0} Exception caught.", e);
}
}
}
// Output: Conversion occurred.
Este exemplo demonstra um operador de conversão implícita definir um operador de conversão que desfça o que o exemplo anterior fez: converte-se de uma classe de valor Digit chamada para o tipo integral de Byte . Porque qualquer dígito puder ser convertido em Byte, não há necessidade de forçar usuários para estar explícito sobre a conversão.
struct Digit
{
byte value;
public Digit(byte value) //constructor
{
if (value > 9)
{
throw new System.ArgumentException();
}
this.value = value;
}
public static implicit operator byte(Digit d) // implicit digit to byte conversion operator
{
System.Console.WriteLine("conversion occurred");
return d.value; // implicit conversion
}
}
class TestImplicitConversion
{
static void Main()
{
Digit d = new Digit(3);
byte b = d; // implicit conversion -- no cast needed
}
}
// Output: Conversion occurred.
Consulte também
Referência
Operadores de conversão (Guia de Programação em C#)