【发布时间】:2012-12-14 20:20:51
【问题描述】:
-
总结
忽略对象不能表示为数组的情况,是否可以定义扩展(静态)方法,如:
public static ? ToArray<TSource>(this TSource source);并返回一个对象的数组,如果它由任何元素序列组成?如果是,
?会是什么? -
解释
我考虑过以下声明:
public static TElement[] ToArray<TElement>(this IEnumerable<TElement> source); public static ? ToArray<TSource>(this IEnumerable source);但我不能假设一个未知的类一定实现了
IEnumerable<T>或IEnumerable。我什至无法定义?,因为它只是IEnumerable,它超出了通用定义。我还考虑过
Array类:public static Array ToArray<TSource>(this TSource source);但这意味着在编译时元素类型是未知的。
所以我想知道是否有可能在没有实现
IEnumerable<T>的类的情况下在编译时知道元素类型?
【问题讨论】:
-
查看通用约束,如 MSDN 中所述。这可能会为您指明正确的方向。 msdn.microsoft.com/en-us/library/d5x73970(v=vs.80).aspx
-
如果该类没有实现 IEnumerable
或 IEnumerable,那么任何人将如何找到它的“元素”?如果一个类没有实现 IEnumerable,你会如何将它描述为具有“元素”?即使一个类定义了一个 [int index]索引器,也没有预定义的方法来确定允许的索引是什么。 -
因为我的英语很差。如果我后来发现某些东西可能会导致误解,我会回滚并尝试更正。这是您问题的答案吗?