我正在阅读这http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspx,但我想知道,使用接口与使用属性创建类并通过“using MyClass.cs
?”将其添加到类中相比有什么区别或好处?这似乎是任何方式,你必须实例化方法或属性类...使用接口VS.使用“使用”
感谢您的意见。
我正在阅读这http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.80).aspx,但我想知道,使用接口与使用属性创建类并通过“using MyClass.cs
?”将其添加到类中相比有什么区别或好处?这似乎是任何方式,你必须实例化方法或属性类...使用接口VS.使用“使用”
感谢您的意见。
接口是而不是所以你可以使用接口的对象。它的意思是,你必须必须创建这些对象。
谢谢ispiro,我看到Brian在他的评论中试图说的是“实现他们必须实现的方法。”所以,这是最大的区别。 – user1477388 2013-02-21 18:02:11
几个不同的类可能都实现相同的接口,从而共享一组特定的特征。例如。所有实现IEnumerable
接口的类型都可以被枚举,而没有任何其他的共同点。接口允许类型支持特定功能的限制较少。
我仍然不确定我是否理解,因为无法使用不同的类共享“使用MyClass.cs”? – user1477388 2013-02-21 17:56:33
@ user1477388 - 当然可以。但是所有的接口都是告诉实现类他们必须实现的方法。实施方法如何实施留给实施班。 – Tim 2013-02-21 17:59:57
我不明白这两者是如何相似的。一个接口定义了客户如何使用您的代码。 using关键字(后面跟着一个名称空间名称,而不是文件名)只是让您使用该名称空间中的对象,而不用每次都将它们作为整个名称空间的前缀。
更常见的问题是实现接口和从类派生的区别是什么。也许这就是你想要问的。这个问题在其他地方已经有相当广泛的报道。
感谢您的评论,我会考虑。 – user1477388 2013-02-21 18:12:24
接口只包含您的逻辑的签名。它必须在你的孩子班充分实施。当我们想要包含与您的项目名称空间不同的名称空间时,我们使用“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对象。这是一个简单的例子,但这种逻辑可以应用于许多其他情况。这是接口可以真正有用的地方。我希望这可以帮助..
Faaiz这是非常有帮助的。非常感谢你 :) – user1477388 2013-02-21 19:30:37
这是一个很大的话题,已经在例如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
谢谢Jason,但我不是简单地问使用Interfaces的好处,而是使用Interfaces而不是使用'using'的区别。 – user1477388 2013-02-21 17:57:59
你能说清楚'using'是什么意思吗?在使用(var foo = new Object())或者导入命名空间时,你的意思是使用关键字'using'吗? – 2013-02-21 17:59:21