1

クラスが次のインターフェースを一度に実装できるかどうか、誰かがアドバイスできるかどうか疑問に思っていますか?

interface a1
{
   int mycount;
}

interface a2
{
   string mycount;
}

interface a3
{
   double mycount;
}
4

1 に答える 1

6

インターフェイスはどれもコンパイルされません。それらはメソッドであり、フィールドではないと仮定します。

競合するメンバー名を持つ複数のインターフェイスを実装する唯一の方法は、明示的な実装を使用することです。

interface a1
{
   int mycount();
}

interface a2
{
   string mycount();
}


class Foo : a1, a2
{
    int a1.mycount()     { ... }
    string a2.mycount()  { ... }


    // you can _only_ access them through an interface reference
    // even Bar members need to typecast 'this' to call these methods
    void Bar()
    {
         var x = mycount();               // Error, won't compile
         var y = (this as a2).mycount();  // Ok, y is a string
    }
}
于 2013-05-11T09:21:18.237 に答える