最近我注意到泛型构造类型可以是开放的和封闭的。但我不明白他们的实际意思。能举个简单的例子吗?
最佳答案
实际上术语并不重要 - 我不记得上次我不得不担心它是什么时候除了试图写它。
- 未绑定(bind) 类型没有指定类型参数
- 一个构造类型至少指定了一个类型参数
- 类型参数是一个开放类型
- 元素类型为开放式的数组类型是开放式
- 一个开放构造类型至少有一个类型参数是开放类型
- 封闭类型是任何不开放的类型
(嵌套类型还有更多规则。请参阅 C# 3.0 规范第 4.4 节以获取详细信息。)
作为开放构造类型的示例,请考虑:
public class NameDictionary<T> : Dictionary<string, T>
typeof(NameDictionary<>)
的基类是:
- 构造是因为它指定了类型参数
- 打开,因为第二个类型参数(
T
)是一个打开类型
Type.IsGenericType
的 MSDN 文档有一张非常有用的小 table 。
重申一下,这在日常使用中几乎完全不重要。
我通常赞成了解正确的术语——尤其是“按引用传递”等术语——但在这种情况下,它真的、真的不会经常出现。我想积极地劝阻你不要担心 :)
关于c# - 泛型开放和封闭构造类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1735035/