C# 接口作为数据类型

k9n*_*191 -1 c#

大家好,我正在尝试学习一些界面。我得到了关于它的基本知识,那是一个班级的合同。我现在对接口作为数据类型有点困惑。

问题:使用接口作为数据类型的目的是什么。

前任。

IEnumerable Folders {get;} 
Run Code Online (Sandbox Code Playgroud)

或者

IComparable Compare {get;}
Run Code Online (Sandbox Code Playgroud)

如果我是正确的,IEnumerable 也是一个接口。值类型保存在何处(如果有)?

谢谢

Pac*_*ac0 5

这意味着数据类型可以引用实现接口的类的任何对象。

IEnumerable thing = new List(); 作品

IEnumerable thing = new Collection(); 也有效

IEnumerable thing = new HashSet(); 也有效

在任何情况下,您都不需要知道实际分配给您的对象的确切类型您只需要实现合同的任何类型

例如,所有的IEnumerator实现GetEnumerator(),让你可以使用foreach

foreach (var elem in thing) 任何类型的东西都可以工作,它只需要实现 IEnumerator。