构造类型,有界类型和无界类型的含义?

Tim*_*Tim 1 c# visual-studio

来自C#5.0规格

4.4构造类型

泛型类型声明本身表示一种未绑定的泛型类型,它通过应用类型参数用作形成许多不同类型的"蓝图".类型参数写在尖括号(<和>)内,紧跟在泛型类型的名称后面.未绑定的泛型类型只能在typeof-expression(第7.6.11节)中使用.包含至少一个类型参数的类型称为构造类型.构造类型可以在可以出现类型名称的语言中的大多数地方使用.未绑定的泛型类型只能在typeof-expression(第7.6.11节)中使用.
构造类型也可以在表达式中用作简单名称(第7.6.2节)或访问成员(第7.6.4节).

"构造类型"的概念是否与"有界通用类型"的概念相同?

4.4.3绑定和未绑定类型

术语" 未绑定类型"是指非泛型类型或非绑定泛型类型.术语绑定类型是指非泛型类型或构造类型.

未绑定类型是指由类型声明声明的实体.未绑定的泛型类型本身不是类型,不能用作变量,参数或返回值的类型,也不能用作基类型.可以引用未绑定泛型类型的唯一构造是typeof表达式(第7.6.11节).

非泛型类型是非绑定类型还是绑定类型?

Eri*_*ert 5

"构造类型"的概念是否与"有界通用类型"的概念相同?

是的,以你的错字为模.你的意思是说"绑定泛型类型",而不是"有界泛型类型".

非泛型类型是非绑定类型还是绑定类型?

是.

为什么这些术语如此冗余/重复/错综复杂?

这些术语是为了方便规范作者和编译器团队而发明的.你已经确定的唯一冗余是构造等于绑定泛型,这对我来说似乎很合理.我没有看到任何重复或卷积.

如果这些术语看起来很复杂,那么我就向你提出现代业务线OO语言的类型理论是一个复杂的主题 ; 它的行话反映了这种复杂性.

以这种方式思考它可能会有所帮助.假设我们有一个类C,它接受n个参数,对于n> = 0:

  • 概念C-that-takes-n-type-arguments是一种未绑定的类型.
  • 概念C-with-n-type-arguments绑定类型.
  • 一个约束泛型类型必须是已泛型类型构造类型的参数,所以我们把它叫做一个构造类型.

显然,如果n == 0,则C同时是绑定类型和非绑定类型.