-3

我正在阅读此http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspx但我想知道,使用接口而不是简单地创建接口有什么区别或好处具有属性的类并通过“ using MyClass.cs?”将其添加到您的类中 似乎无论哪种方式,您都必须实例化方法或属性类......

谢谢你的建议。

4

4 回答 4

2

几个不同的类可能都实现相同的接口,因此共享一组特定的特性。例如,所有实现IEnumerable接口的类型都可以被枚举,而没有任何其他共同点。接口允许类型限制较少的方式来支持特定功能。

于 2013-02-21T17:55:40.353 回答
2

An interface is not so you can use the interface's objects. It's, rather, so that you must create those objects.

于 2013-02-21T18:01:34.210 回答
1

我看不出两者有什么相似之处。接口定义了客户端如何使用您的代码。using 关键字(后跟命名空间名称而不是文件名)仅允许您使用该命名空间中的对象,而无需每次都以整个命名空间作为前缀。

一个更常见的问题是实现接口和从类派生有什么区别。也许这就是你想问的。这个问题在其他地方已经被广泛讨论过。

于 2013-02-21T18:10:39.653 回答
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 对象。这是一个简单的例子,但这种逻辑可以应用于许多其他情况。这就是接口真正有用的地方。我希望这有帮助..

于 2013-02-21T18:38:59.373 回答