.net - 引用接口(interface)

标签 .net interface

我有一个关于接口(interface)的问题。我知道你不能创建接口(interface)实例,对吗?但是我在演示 IDictionaryEnumerator 接口(interface)的用法的页面上看到:

// Loop through all items of a Hashtable
IDictionaryEnumerator en = hshTable.GetEnumerator();
while (en.MoveNext())
{
    string str = en.Value.ToString();
}

这不是创建一个名为 en 的 IDictionaryEnumerator 类型的对象吗?我读过有关 GetEnumerator() 的内容,试图了解它返回的内容:

Returns a reference to an enumerator object, which is used to iterate over a Collection Object.

..但我真的不明白什么时候应该创建这样的接口(interface)引用而不是类对象。我的意思是这样做的好处是什么。

提前谢谢您。

最佳答案

这只是多态性的演示 - hshTable.GetEnumerator() 返回一个在外部世界中看起来像 IDictionaryEnumerator 的实例。该实例可以表现出与从 myFactory.GetEnumerator() 获取的实例不同的行为。这两个对象看起来都像 IDictionaryEnumerator,但对 IDictionaryEnumerator 接口(interface)公开的方法具有不同的实现。希望能帮助到你。

关于.net - 引用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3763531/

相关文章:

C# 在静态上下文中访问 IModelMetaDataProvider - IHtmlHelper

.net - GDI+ 中的经验法则

javascript - TypeScript 中的接口(interface)和类

c++ - 访问使用接口(interface)实例化的类的私有(private)成员

c# - 在继承类上多次定义接口(interface)

java - 使用接口(interface)创建 Stack Generic ArrayList

Java检查 child 是否正在实现接口(interface)

c# - 使用 C# 进行复杂事件处理

c# - 数组克隆字节 10-40?

c# - 如何检查当前时区是否为 (UTC+9 :00) Osaka, Sapporo, Tokyo on other languages?