2015-04-06 47 views
0

只是想知道如何稱此爲我的學習目的。我知道,當我不使用IIm或IIn.Display時(通過使用public void Display();),通過對象創建來調用它;但是,我不知道如何調用它。如何調用這些接口方法?

public interface IIn 
{ 
    void Display(); 
} 
public interface IIM : IIn 
{ 
    void Display(); 
} 
public class temp : IIM 
{ 
    void IIM.Display() 
    { 
     Console.WriteLine("Displaying 1"); 
    } 

    void IIn.Display() 
    { 
     Console.WriteLine("Displaying 2 "); 
    } 

    static void Main() 
    { 
     temp t = new temp(); 

     Console.ReadLine(); 
    } 
+0

這是一個C#版本特定的問題?如果沒有,'c#'標籤就足夠了。 – 2015-04-06 10:46:10

+0

該代碼無法編譯(因爲它隱藏了由IIn引入的那個,所以在聲明IIM接口的Display()方法時需要'new'關鍵字) – 2015-04-06 10:47:44

+1

@MthetheWWatson是否要提供一個代碼它不會編譯? – dotnetom 2015-04-06 10:51:20

回答

6

鑑於

var t = new temp(); 

你只需要投t的接口之一......在接口類型的變量複製這點就足夠

IIM t1 = t; 
IIn t2 = t; 
t1.Display(); // Displaying 1 
t2.Display(); // Displaying 2 

或傳球它作爲方法的參數:

static void MyShow(IIM t1, IIn t2) 
{ 
    t1.Display(); // Displaying 1 
    t2.Display(); // Displaying 2 
} 

MyShow(t, t); 

,或者你可以直接將它轉換和使用方法:

((IIM)t).Display(); // Displaying 1 
((IIn)t).Display(); // Displaying 2 

請注意,如果你在你的班上有第三種方法

public void Display() 
{ 
    Console.WriteLine("Displaying 3 "); 
} 

這將稱之爲

t.Display(); // Displaying 3 
+0

謝謝你太棒了,尤其是我喜歡你的第三種方法,我一直在尋找。 – Learner 2015-04-06 11:04:13