2013-05-11 121 views

回答

6

你的接口都不會編譯,我假設它們是方法而不是字段。

實現與衝突的membernames多個接口的唯一方法是通過使用顯式實現:

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 
    } 
} 
+0

謝謝Henk。這是假設您已將數據成員更改爲方法,並且我知道此實現將起作用。 我的問題是,在最近的一次採訪中,我遇到了同樣的問題,並且我的答案被拒絕了 - 來自不同界面的同名數據成員不可能繼承到同一個類中。所以我想確認這是正確的。面試官因爲某種原因認爲不然,這讓我感到十分困惑。 – Alag20 2013-05-11 09:53:55

相關問題