Aracılığıyla paylaş


Nasıl yapılır: İki Arabirimin Üyelerini Açıkça Uygulama (C# Programlama Kılavuzu)

Açık arabirimi uygulaması Programcı, aynı üye adları ve ayrı bir uygulama her arabirim üyesi verin iki arabirim uygulamak de izin verir.Bu örnekte, hem metrik hem de İngilizce birimleri kutusunun boyutlarını görüntüler.Kutusunu sınıfı IEnglishDimensions ve farklı ölçüm sistemleri gösteren IMetricDimensions iki arabirimi uygular.İki arabirim aynı üye adları, uzunluğu ve genişliği vardır.

Örnek

// Declare the English units interface: 
interface IEnglishDimensions
{
    float Length();
    float Width();
}

// Declare the metric units interface: 
interface IMetricDimensions
{
    float Length();
    float Width();
}

// Declare the Box class that implements the two interfaces: 
// IEnglishDimensions and IMetricDimensions: 
class Box : IEnglishDimensions, IMetricDimensions
{
    float lengthInches;
    float widthInches;

    public Box(float length, float width)
    {
        lengthInches = length;
        widthInches = width;
    }

    // Explicitly implement the members of IEnglishDimensions: 
    float IEnglishDimensions.Length()
    {
        return lengthInches;
    }

    float IEnglishDimensions.Width()
    {
        return widthInches;
    }

    // Explicitly implement the members of IMetricDimensions: 
    float IMetricDimensions.Length()
    {
        return lengthInches * 2.54f;
    }

    float IMetricDimensions.Width()
    {
        return widthInches * 2.54f;
    }

    static void Main()
    {
        // Declare a class instance box1:
        Box box1 = new Box(30.0f, 20.0f);

        // Declare an instance of the English units interface:
        IEnglishDimensions eDimensions = (IEnglishDimensions)box1;

        // Declare an instance of the metric units interface:
        IMetricDimensions mDimensions = (IMetricDimensions)box1;

        // Print dimensions in English units:
        System.Console.WriteLine("Length(in): {0}", eDimensions.Length());
        System.Console.WriteLine("Width (in): {0}", eDimensions.Width());

        // Print dimensions in metric units:
        System.Console.WriteLine("Length(cm): {0}", mDimensions.Length());
        System.Console.WriteLine("Width (cm): {0}", mDimensions.Width());
    }
}
/* Output:
    Length(in): 30
    Width (in): 20
    Length(cm): 76.2
    Width (cm): 50.8
*/

Güçlü Programlama

İngilizce birimlerinde varsayılan ölçümler yapmak isterseniz, uzunluğu ve genişliği yöntemleri normalde uygulamak ve açıkça IMetricDimensions arabirimden uzunluğu ve genişliği yöntemlerini uygulayın:

// Normal implementation: 
public float Length()
{
    return lengthInches;
}
public float Width()
{
    return widthInches;
}

// Explicit implementation: 
float IMetricDimensions.Length()
{
    return lengthInches * 2.54f;
}
float IMetricDimensions.Width()
{
    return widthInches * 2.54f;
}

Bu durumda İngilizce birimi sınıfı örneğinden erişebilir ve metrik birimleri erişim arabirimi örneği:

public static void Test()
{
    Box box1 = new Box(30.0f, 20.0f);
    IMetricDimensions mDimensions = (IMetricDimensions)box1;

    System.Console.WriteLine("Length(in): {0}", box1.Length());
    System.Console.WriteLine("Width (in): {0}", box1.Width());
    System.Console.WriteLine("Length(cm): {0}", mDimensions.Length());
    System.Console.WriteLine("Width (cm): {0}", mDimensions.Width());
}

Ayrıca bkz.

Görevler

Nasıl yapılır: Arabirim Üyelerini Açıkça Uygulama (C# Programlama Kılavuzu)

Başvuru

Sınıflar ve Yapılar (C# Programlama Kılavuzu)

Arabirimler (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu