2013-02-21 99 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