分解MS RBTree (内部.Net抽象类),我发现有一个方法返回TreePage<K>
private TreePage<K> AllocPage(int size)
{
...
}在方法中,变量被声明为TreePage...but --类不是这样定义的:
private sealed class TreePage
{
...
}然而,当我使用.Net 2010 (Express)模拟代码和定义时,我不能这样做:
错误:非泛型类型'RBTree.TreePage‘不能与类型参数一起使用。
那么,有没有我找不到的扩展方法呢?有什么事情是MS做的,我们就是看不到?
发布于 2010-10-25 00:12:39
当您声明嵌套在泛型类中的类时
class Foo<T>
{
class Bar
{
}
}这将被编译为一个类。
Foo<T>和一堂课
Foo+Bar<T>Bar是泛型的,因为它嵌套在泛型类Foo中。但是类型参数声明不会在C#中重复(您将类称为Foo.Bar)。
我注意到Reflector显示了嵌套在泛型类型中的类的泛型类型参数,即使它们没有直接声明任何类型参数。那是个虫子。当将代码直接从Reflector复制出来时,您需要修复它。
发布于 2010-10-25 00:14:04
它实际上没有你想象的那么复杂。Klass和Klass<T>是两种完全不同的类型。即:
class A
{
}
class A<T>
{}
class Program
{
static public void Main(string[] args)
{
A a = new A();
A<int> generic_a = new A<int>();
}
}还有一个TreePage<T>漂浮在那里的某处。
https://stackoverflow.com/questions/4011105
复制相似问题