小编典典

泛型开放和封闭构造类型

c#

最近,我注意到泛型构造类型可以打开和关闭。但是我不明白它们的真正含义。你能举一个简单的例子吗?


阅读 478

收藏
2020-05-19

共1个答案

小编典典

在实践中,术语并没有太大关系-我不记得上一次不得不担心它的时候了, 除了 尝试编写它时。

  • 一个 未绑定 类型已指定类型的参数
  • 构造 类型具有指定的至少一个类型参数
  • 类型参数是 开放类型
  • 元素类型为开放的数组类型为 开放类型
  • 一个 开放的 构造类型具有至少一种类型的参数,它是一个开放型
  • 密闭 型是任何类型的,其不开

(嵌套类型还有其他规则。有关详细信息,请参阅C#3.0规范第4.4节。)

作为开放构造类型的示例,请考虑:

public class NameDictionary<T> : Dictionary<string, T>

的基类typeof(NameDictionary<>)为:

  • 由于指定类型参数而构造
  • 打开,因为第二个类型参数(T)是打开类型

的MSDN文档Type.IsGenericType有一个非常有用的小表。

只是重申一下,这在日常使用中几乎完全不重要。

我通常赞成了解正确的术语-尤其是诸如“通过引用”之类的术语-但在这种情况下,它的确确实很少出现。我想积极劝阻您不要担心:)

2020-05-19