Meh*_*ari 26
您将能够将对象传递给期望接口作为参数的方法(或满足类型约束).C#不支持" 鸭子打字".只需编写接口定义的方法,该对象就不会自动与接口类型"兼容":
public void PrintCollection<T>(IEnumerable<T> collection) {
foreach (var x in collection)
Console.WriteLine(x);
}
Run Code Online (Sandbox Code Playgroud)
如果List<T>没有实现IEnumerable<T>接口,则无法将其作为PrintCollection方法的参数传递(即使它有GetEnumerator方法).
基本上,接口声明合同.实现接口会强制您的类绑定到合同(通过提供适当的成员).因此,依赖于该合同的一切(依赖于由对象提供的接口指定的功能的方法)也可以与您的对象一起使用.
Jor*_*oba 17
主要好处是代码可读性,代码可维护性和代码"语义".
小智 5
接口没有提供任何实际的优势。任何可以通过接口完成的事情都可以而且应该使用其他语言结构来完成。多重继承经常被认为是使用接口带来的唯一真正的好处,但我可以在 C# 中非常轻松、清晰地执行多重继承 - 我每天都这样做。在不“破坏”接口的情况下更改代码是所有借口中最愚蠢的……这适用于具体类,也适用于抽象类或接口。只要功能签名没有改变,你就没有破坏接口。在哪里宣布的并不重要。简单地把一个功能原型放在一个单独的文件中并在前面加上“I”命名并没有什么意义——除了你最终需要维护的源文件数量是原来的两倍之外。接口是早期定义的,然后维护契约的假设是荒谬的。接口方法及其参数一直在变化,因为一切都无法预先知道。这就是微软很久以前就停止使用它们的原因。他们有 IUnKnown、IUnknown2 等等。这造成了混乱。
小智 5
接口的主要好处主要与项目设计有关。
如果您使用接口:
Object从主类中获取接口部分( )。IEnumerable在集合中。根据 C# Architect 的说法,简单地说,它是一个契约。消费者必须遵守。
| 归档时间: |
|
| 查看次数: |
24629 次 |
| 最近记录: |