2013-02-21 135 views
-3

我正在閱讀這http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspx,但我想知道,使用接口與使用屬性創建類並通過「using MyClass.cs?」將其添加到類中相比有什麼區別或好處?這似乎是任何方式,你必須實例化方法或屬性類...使用接口VS.使用「使用」

感謝您的意見。

+3

這是一個很大的話題,已經在例如http://stackoverflow.com/questions/240152/why-would-i-want-to-use-interfaces http://stackoverflow.com/questions/1686174/when-should-one-use-interfaces使用接口可以提高代碼設計,降低複雜性,耦合和其他好處。 – 2013-02-21 17:56:56

+0

謝謝Jason,但我不是簡單地問使用Interfaces的好處,而是使用Interfaces而不是使用'using'的區別。 – user1477388 2013-02-21 17:57:59

+0

你能說清楚'using'是什麼意思嗎?在使用(var foo = new Object())或者導入命名空間時,你的意思是使用關鍵字'using'嗎? – 2013-02-21 17:59:21

回答

2

接口是而不是所以你可以使用接口的對象。它的意思是,你必須必須創建這些對象。

+0

謝謝ispiro,我看到Brian在他的評論中試圖說的是「實現他們必須實現的方法。」所以,這是最大的區別。 – user1477388 2013-02-21 18:02:11

2

幾個不同的類可能都實現相同的接口,從而共享一組特定的特徵。例如。所有實現IEnumerable接口的類型都可以被枚舉,而沒有任何其他的共同點。接口允許類型支持特定功能的限制較少。

+0

我仍然不確定我是否理解,因爲無法使用不同的類共享「使用MyClass.cs」? – user1477388 2013-02-21 17:56:33

+1

@ user1477388 - 當然可以。但是所有的接口都是告訴實現類他們必須實現的方法。實施方法如何實施留給實施班。 – Tim 2013-02-21 17:59:57

1

我不明白這兩者是如何相似的。一個接口定義了客戶如何使用您的代碼。 using關鍵字(後面跟着一個名稱空間名稱,而不是文件名)只是讓您使用該名稱空間中的對象,而不用每次都將它們作爲整個名稱空間的前綴。

更常見的問題是實現接口和從類派生的區別是什麼。也許這就是你想要問的。這個問題在其他地方已經有相當廣泛的報道。

+0

感謝您的評論,我會考慮。 – user1477388 2013-02-21 18:12:24

1

接口只包含您的邏輯的簽名。它必須在你的孩子班充分實施。當我們想要包含與您的項目名稱空間不同的名稱空間時,我們使用「using」子句,但是如果您的類或接口位於相同的名稱空間中,則不需要使用「using」子句。

你可以通過接口繼承你的子類,並使你的代碼更加靈活。

它的一個例子是:

public interface IClown 
{ 
    string FunnyThingIHave { get; } 
    void Honk(); 
} 

public class TallGuy : IClown 
{ 
    public string FunnyThingIHave { 
    get { return "big shoes"; } 
} 
    public void Honk() { 
    MessageBox.Show("Honk honk!"); 
    } 
} 
public class Joker:IClown 
{ 
    public string FunnyThingIHave 
    { 
    get {return "I have a clown car"} 
    } 
    public void Honk() 
    { 
    MessageBox.Show("Honk Bonk"); 
    } 
} 

public class FunnyClowns 
{ 
    Joker joker = new Joker(); 
    TallGuy tguy = new TallGuy(); 

    string WhichFunnyThingIWant(IClown clownType) 
    { 
    clownType.Honk(); 
    } 
} 

現在,這是什麼東西做的是定義一個小丑接口,然後定義兩個子類它,然後第三類可以動態調用IClown的clowntype對象。這是一個簡單的例子,但這種邏輯可以應用於許多其他情況。這是接口可以真正有用的地方。我希望這可以幫助..

+0

Faaiz這是非常有幫助的。非常感謝你 :) – user1477388 2013-02-21 19:30:37