C# 面试题 目录

C# 中泛型约束 (generic constraints) 有哪些?

推荐答案

在C#中,泛型约束(generic constraints)用于限制泛型类型参数的类型。以下是C#中常见的泛型约束:

  1. where T : struct
    类型参数必须是值类型(如 intbool 等)。

  2. where T : class
    类型参数必须是引用类型(如 stringobject 等)。

  3. where T : new()
    类型参数必须具有无参数的公共构造函数。

  4. where T : <基类名>
    类型参数必须是指定基类或其派生类。

  5. where T : <接口名>
    类型参数必须实现指定的接口。

  6. where T : U
    类型参数必须是另一个类型参数 U 或其派生类。

  7. where T : unmanaged
    类型参数必须是非托管类型(如 intfloat 等,不能是引用类型或包含引用类型的结构体)。

本题详细解读

1. where T : struct

此约束确保泛型类型参数是值类型。例如:

2. where T : class

此约束确保泛型类型参数是引用类型。例如:

3. where T : new()

此约束确保泛型类型参数具有无参数的公共构造函数。例如:

4. where T : <基类名>

此约束确保泛型类型参数是指定基类或其派生类。例如:

5. where T : <接口名>

此约束确保泛型类型参数实现了指定的接口。例如:

6. where T : U

此约束确保泛型类型参数是另一个类型参数 U 或其派生类。例如:

7. where T : unmanaged

此约束确保泛型类型参数是非托管类型。例如:

纠错
反馈