使用接口Vs.使用“使用”

时间:2013-02-21 17:53:05

标签: c# interface

我正在读这个http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspx,但我想知道,使用接口有什么区别或好处,而不是简单地创建一个带有属性的类,并通过“using MyClass.cs将它添加到您的类中? “看起来你必须实例化方法或属性类......

感谢您的建议。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

接口,因此您可以使用接口的对象。相反,它是必须 创建这些对象。

答案 2 :(得分:1)

我不知道两者是如何相似的。接口定义了客户端如何使用代码。 using关键字(应该后跟命名空间名称而不是文件名)只允许您使用该命名空间中的对象,而不必每次都为它们添加前缀。

一个更常见的问题是实现接口和派生类之间的区别。也许这就是你想要问的问题。这个问题已在其他地方广泛涉及。

答案 3 :(得分:1)

接口仅包含逻辑的签名。它必须在您的子类中完全实现。我们使用"使用"当我们想要包含与项目名称空间不同的名称空间时,如果您的类或接口位于同一名称空间中,则不需要使用"使用"条款。

您可以使用接口继承子类,并使代码更加灵活。

它的一个例子是:

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