【发布时间】:2013-01-28 10:15:58
【问题描述】:
如果任何类在其层次结构的某个阶段实现IEnumerable 接口,是否可以创建一个集合并填充该类?
我想编写一个简单的函数,如果它需要一个实现IList<>、ICollection<>、IEnumerable<> 等或者是Array 的对象(所以所有在某个阶段都实现IEnumerable)我可以用一组值填充它。
所以这个函数不知道它是否会收到List<object> 或object[],但可以同时填充两者。
谢谢。
【问题讨论】:
-
一般情况下您无法填充 IEnumerable。这就是 IList 和 ICollection 存在的原因。但是您可以检查 _IEnumerable 是否实现了 ICollection 或 IList,如果是,则填充它。
-
你想写一个函数,接受任何 IEnumerable 来填充其他(已知)集合,还是你真的想用 IEnumerable 来填充自己的更多值?
-
你不能。例如 IEnumerable 也可以是只读集合后面的接口......你不能填充那些......
-
@poke 后者,我想取一个空的 IEnumerable 并用更多值填充它。实际上,您将传递 IEnumerable 类型,然后我将使用这些值创建它的填充实例。
标签: c# generics ienumerable