Operátory převodu (C# programování Guide)
Operátory převodu lze explicit nebo implicit.Implicitní převod operátory jsou snadnější použití, ale explicitní operátory jsou užitečné, pokud chcete uživatelům operátor uvědomit si, že se převod uskutečňuje.Toto téma ukazuje obou typů.
Příklad
Toto je příklad explicitní převod operátor.Tento operátor převede z typu Byte hodnotu typu s názvem Digit.Protože ne všechny bajty lze převést na číslici, převod je explicitní znamená, že musí být použita nádech, jak je znázorněno Main metoda.
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.
Tento příklad ukazuje operátor implicitní převod definováním převodu operátor, který vrátí zpět nebyla předchozí příklad: převede z třídy hodnotu nazvanou Digit na integrál Byte typu.Protože Libovolná číslice lze převést na Byte, není nutné vynutit uživatelům explicitní o převod.
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.
Viz také
Referenční dokumentace
Operátory převodu (Příručka programování C#)