来自C# 5.0规范
4.4构造类型 泛型类型声明本身表示--一个未绑定的泛型类型,通过应用类型参数,它被用作形成许多不同类型的“蓝图”。类型参数是紧跟在泛型类型名称后面的尖括号(<和>)中写入的。未绑定的泛型类型只能在类型表达式中使用(§7.6.11)。包含至少一个类型参数的类型称为(构造的类型)。构造的类型可以在语言中的大多数地方使用,在语言中可以出现类型名称。未绑定的泛型类型只能在类型表达式中使用(§7.6.11)。 构造的类型也可以作为简单名称(§7.6.2)或访问成员(§7.6.4)在表达式中使用。
“构造类型”的概念与“有界泛型”的概念是一样的吗?
4.4.3绑定和未绑定类型 术语unbound type指非泛型类型或未绑定泛型类型。术语绑定类型指非泛型类型或构造类型。 未绑定类型指由类型声明声明的实体。--未绑定的泛型类型本身不是类型,不能用作变量、参数或返回值的类型,也不能用作基类型。唯一可以引用未绑定泛型类型的构造是表达式类型(§7.6.11)。
非泛型类型是非绑定类型还是绑定类型?
发布于 2017-04-26 23:51:44
“构造类型”的概念与“有界泛型”的概念是一样的吗?
是的,把你的打字打错了。您的意思是说“绑定泛型类型”,而不是“有界泛型类型”。
非泛型类型是非绑定类型还是绑定类型?
是。
为什么这些术语如此多余/重复/复杂?
这些术语是为了方便规范作者和编译器团队而发明的。您确定的唯一冗余是构造等于绑定泛型,这在我看来是相当合理的。我没有看到任何重复或卷积。
如果这些术语看起来很复杂的话,那么我向你们提出,现代商业OO语言的类型理论是一个复杂的学科;它的行话反映了这种复杂性。
用这种方式思考可能会有帮助。假设我们有一个C类,它接受n个类型的参数,对于n >= 0:
很明显,如果n个== 0,那么C同时是一个绑定类型和一个非绑定类型。
https://stackoverflow.com/questions/43646302
复制相似问题