Sdílet prostřednictvím


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#)

(C# odkaz)

Koncepty

Příručka programování C#

Další zdroje

C#-Reference