Aracılığıyla paylaş


Dönüştürme işleçleri (c Programlama Kılavuzu #) kullanarak

Dönüştürme işleçleri olabilir explicit veya implicit.Dolaylı dönüştürme işleçleri kullanmak daha kolaydır, ancak açık işleçleri dönüştürme işleminin gerçekleştiğinin unutmayın operatör kullanıcıları istediğinizde kullanışlıdır.Bu konuda her iki tür göstermektedir.

Örnek

Bu, açık bir dönüştürme işleci örneğidir.Bu işleç türünden dönüştürür Byte adlı bir değer türü Digit.Dönüştürme açık bir cast kullanılması gerektiğini, yani gösterildiği gibi tüm baytları bir rakam dönüştürülebilir çünkü Main yöntemi.

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.

Bu örnek, önceki örnek vermedi ne geri alır bir Dönüþtürme iþleci tanımlayarak bir kapalı dönüştürme işleci gösterir: adlı değer sınıf dönüştürür Digit için integral Byte türü.Çünkü herhangi bir rakamı dönüştürülebilir bir Byte, dönüştürme hakkında açık olmasını zorlamak için gerek yoktur.

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.

Ayrıca bkz.

Başvuru

Dönüştürme işleçleri (C# Programlama Kılavuzu)

(C# Başvurusu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu