Jon*_*eet 71
在实践中,术语并不重要 - 我不记得上次我不得不担心它,除非在试图写它时.
(嵌套类型还有其他规则.有关血淋淋的详细信息,请参阅C#3.0规范第4.4节.)
作为开放构造类型的示例,请考虑:
public class NameDictionary<T> : Dictionary<string, T>
Run Code Online (Sandbox Code Playgroud)
基类typeof(NameDictionary<>)是:
T)是一个开放类型MSDN文档Type.IsGenericType有一个非常有用的小表.
重申一下,这在日常使用中几乎完全不重要.
我一般都赞成知道正确的术语 - 特别是对于"通过参考传递"等等 - 但在这种情况下它真的,实际上并不经常出现.我想积极劝阻你担心它:)
来自MSDN:
如果可实例化类型已替换其所有类型参数(包括所有封闭类型的所有类型参数),则关闭泛型类型或方法.如果关闭,则只能创建泛型类型的实例.
所以这List<int>是关闭的:
var list = Activator.CreateInstance(typeof(List<int>));
Run Code Online (Sandbox Code Playgroud)
但是这会在运行时抛出异常,因为它List<>是打开的:
var list = Activator.CreateInstance(typeof(List<>));
?
Run Code Online (Sandbox Code Playgroud)