来自C#5.0规范
4.4构造类型
泛型类型声明本身表示未绑定的泛型 类型,用作形成许多不同类型的“蓝图” 应用类型参数的方法。类型参数写在其中 紧跟在名称后面的尖括号(<和>) 通用类型。未绑定的泛型类型只能在a中使用 typeof-expression(§7.6.11)。包含至少一种类型的类型 参数称为构造类型。构造类型可以是 在大多数地方使用的语言可以出现类型名称。 未绑定的泛型类型只能在typeof-expression中使用 (§7.6.11)。
构造类型也可以在表达式中用作简单名称(第7.6.2节)或访问成员(第7.6.4节)。
“构造类型”的概念是否与“有界泛型类型”的概念相同?
4.4.3绑定和未绑定类型
术语未绑定类型是指非泛型类型或未绑定类型 通用类型。术语绑定类型是指非泛型类型或 构造类型。
未绑定类型是指由a声明的实体 类型声明。 未绑定的泛型类型本身不是一种类型,而且 不能用作变量,参数或返回值的类型,或 作为基本类型。唯一一个未绑定泛型类型的构造 可以引用的是typeof表达式(第7.6.11节)。
非泛型类型是非绑定类型还是绑定类型?
答案 0 :(得分:5)
“构造类型”的概念是否与“有界泛型类型”的概念相同?
是的,以你的错字为模。你的意思是说“绑定泛型类型”,而不是“有界泛型类型”。
非泛型类型是非绑定类型还是绑定类型?
是
为什么这些术语如此冗余/重复/错综复杂?
这些术语是为了方便规范作者和编译器团队而发明的。您确定的唯一冗余是构造等于绑定泛型,这对我来说似乎很合理。我没有看到任何重复或卷积。
如果这些术语看起来很复杂,那么我就向你提交现代业务线OO语言的类型理论是一个复杂的主题;它的行话反映了这种复杂性。
以这种方式思考它可能会有所帮助。假设我们有一个带有n个参数的C类,对于n> = 0:
显然,如果n == 0,则C同时是绑定类型和未绑定类型。