3
这是一个常见的问题的一个简单的例子:您认为从非泛型类型派生泛型类型定义很重要吗?
ICollection<int> myIntegers = ....
ICollection<string> myStrings = ....
在某些时候,我通过这些和其他 类型的实例来接收这些类型为IEnumerable方法。 (非通用形式)。
没有通过反射从后门黑客, 代码无法确定:
1. That the instance is a constructed type of ICollection<T>
2. The number of elements in the ICollection<T>-based type.
不知道一般的说法是什么。
当我定义一个通用的类型,其提供操作 具有所述通用参数类型 无依赖性(例如,像的ICollection的Count属性),I 我大体限定一个非通用的基本类型,这是 在这里我把非类型相关的操作,比如:
public abstract class FrugalList
{
public abstract int Count {get;}
}
public class FrugalList<T> : FrugalList
{
public override int Count {get{...}}
void Add(T item) {...}
}
鉴于这种情况,我可以用抽象基类 获得建造在泛型类型定义的任何类型 的实例的计数, 容易。
所以,问题是很简单,你觉得 重要的是要提供此功能 (这也可以通过接口来完成)?
抱歉不同意。如果你看一下Enumerable.Count()的实现,你可能会明白为什么。简而言之,我的代码将接受IEnumerable,但如果传入的对象是一个集合,那么我的代码可以根据能够事先获取序列中的项目数来优化它的功能。 - Tony Tanzillo 2分钟前 – 2012-02-21 02:52:22