首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当MyNestedClass<K>不是MyNestedClass<K>时返回MyNestedClass<K>?

当MyNestedClass<K>不是MyNestedClass<K>时返回MyNestedClass<K>?
EN

Stack Overflow用户
提问于 2010-10-25 00:05:59
回答 2查看 62关注 0票数 0

分解MS RBTree (内部.Net抽象类),我发现有一个方法返回TreePage<K>

代码语言:javascript
复制
private TreePage<K> AllocPage(int size)
{
    ...
}

在方法中,变量被声明为TreePage...but --类不是这样定义的:

代码语言:javascript
复制
private sealed class TreePage
{
    ...
}

然而,当我使用.Net 2010 (Express)模拟代码和定义时,我不能这样做:

错误:非泛型类型'RBTree.TreePage‘不能与类型参数一起使用。

那么,有没有我找不到的扩展方法呢?有什么事情是MS做的,我们就是看不到?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-25 00:12:39

当您声明嵌套在泛型类中的类时

代码语言:javascript
复制
class Foo<T>
{
    class Bar
    {
    }
}

这将被编译为一个类。

代码语言:javascript
复制
Foo<T>

和一堂课

代码语言:javascript
复制
Foo+Bar<T>

Bar是泛型的,因为它嵌套在泛型类Foo中。但是类型参数声明不会在C#中重复(您将类称为Foo.Bar)。

我注意到Reflector显示了嵌套在泛型类型中的类的泛型类型参数,即使它们没有直接声明任何类型参数。那是个虫子。当将代码直接从Reflector复制出来时,您需要修复它。

票数 4
EN

Stack Overflow用户

发布于 2010-10-25 00:14:04

它实际上没有你想象的那么复杂。KlassKlass<T>是两种完全不同的类型。即:

代码语言:javascript
复制
  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>漂浮在那里的某处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4011105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档