C#:在可以显示类型名的地方可以使用构造的类型?

C#:在可以显示类型名的地方可以使用构造的类型?,c#,generics,C#,Generics,从: 包含至少一个类型参数的类型称为 构造类型。构造类型可以在中的大多数位置使用 可以显示类型名称的语言 我从这句话中了解到,包含一个类型参数(即使在需要更多参数的情况下)就足以将泛型类型称为“构造类型”,并在类型声明中使用 能否提供一个泛型类型的示例,该泛型类型具有多个类型参数,这些参数仅通过指定一个参数来构造,并在可以显示类型名称的位置使用 编辑1 该定义可能应理解为: 包含所有必需类型参数的类型称为 构造类型 这意味着:泛型定义附带一定数量的类型参数。构造的类型是通过传递所有必需的参数来创

从:

包含至少一个类型参数的类型称为 构造类型。构造类型可以在中的大多数位置使用 可以显示类型名称的语言

我从这句话中了解到,包含一个类型参数(即使在需要更多参数的情况下)就足以将泛型类型称为“构造类型”,并在类型声明中使用

能否提供一个泛型类型的示例,该泛型类型具有多个类型参数,这些参数仅通过指定一个参数来构造,并在可以显示类型名称的位置使用

编辑1 该定义可能应理解为:

包含所有必需类型参数的类型称为 构造类型

这意味着:泛型定义附带一定数量的类型参数。构造的类型是通过传递所有必需的参数来创建的,这些参数可以是开放类型,也可以是封闭类型

此外,我们还可以对泛型类型进行某种“重载”,其中
队列
是来自
队列
(以及来自
队列
队列
等)的另一种类型

名称空间小部件
{
类队列{…}
类队列{…}
}
每种类型都有一组参数;要识别类型,必须使用所需参数的确切数量,而不是“至少一个”。
所以,也许“至少一个”意味着,当你看到一个带有“至少一个”类型参数的声明时,你可以知道这是一个构造的泛型

类似List的抽象形式称为泛型类型 像List或List这样的具体形式称为构造类型

因此,您不能使用类似Listx=newlist()的东西; 您必须获取Listx=newlist 因此,构造的名称可以出现在通常出现的类型名的位置

参数的数量无关紧要。泛型类型的最小值始终为1个参数。 泛型和具体类型中的参数数量必须匹配。 他们只是给出了一个定义:如果某个对象有一个类型参数,那么它必须是一个具体类型,不能是其他对象。它并没有说,所有带有类型参数的内容都是有效的。

关于“开放类型”的问题已经得到了解决

typeof(列表)
是“开放”或泛型类型。参数尚未设置。它对构造类型开放:“构造类型”

typeof(List).MakeGenericType(typeof(int));
你达到了与使用相同的效果

typeof(List<int>)
typeof(列表)

generic type具有多个类型参数,这些参数由指定一个参数构造,但没有语法。您可以指定无
C
或全部
C
。您不能只指定一些
C
。已经处理了“开放类型”的问题。但就在我引用的定义之后,我们有:“构造类型是开放类型当且仅当其一个或多个类型参数是开放类型。构造嵌套类型是开放类型当且仅当其一个或多个类型参数或其包含类型的类型参数是开放类型。”因此构造的类型仍然可以打开。怎么可能呢?在需要类型的地方,这样一个构造的类型怎么会出现呢?@AgostinoX在你的引语上方是:“一个类型参数定义了一个开放类型。”<代码>类C{List field;}<代码>列表这里是构造的,是开放式的。我读了很多像你说的问题,我的问题是关于“构造”的概念,而不是开放/封闭的概念。
typeof(List<>)
typeof(List<>).MakeGenericType(typeof(int));
typeof(List<int>)