2010年1月5日火曜日

異なるInterface間で同様のMethodを定義して、.演算子を使用してそのInterfaceを実装する際にMethodが衝突するのを回避してみる。

using System;


interface IInterface1
{
    void printOut(string s);
}


interface IInterface2
{
    // IInterface1のMethodに衝突させる
    void printOut(string s);
}


class SampleClass:IInterface1,IInterface2
{
    // .演算子でMethodの衝突を回避
    void IInterface1.printOut(string s)
    {
        Console.WriteLine(s);
    }


    void IInterface2.printOut(string s)
    {
        Console.WriteLine(s);
    }
}


class MainClass
{
    static void Main()
    {
        SampleClass sample = new SampleClass();
        // smpleをIInterface1にcast
        IInterface1 i1 = (IInterface1)sample;
        // 出力値:Interface1
        i1.printOut("Interface1");
        // i1をIInterface2にcast
        IInterface2 i2 = (IInterface2)i1;
        // 出力値:Interface2
        i2.printOut("Interface2");
    }
}

0 コメント:

コメントを投稿