C#中where的约束

在C#中,where 关键字用于泛型中的约束,以便限制泛型参数 T 可以是哪些类型。以下是 where 约束的几种类型:

  1. 类类型约束(Class Constraint):

    • 指定 T 必须是引用类型。

    • 使用 where T : class 表示。

  2. 结构体约束(Struct Constraint)或 值类型约束(ValueType Constraint):

    • 指定 T 必须是值类型。

    • 使用 where T : struct 表示。

    • 通常与 notnull 约束结合使用,以确保值类型不是 null

  3. 接口约束(Interface Constraint):

    • 指定 T 必须实现一个或多个接口。

    • 使用 where T : IInterface 表示,可以指定多个接口,用逗号分隔。

  4. 基类约束(Base Type Constraint):

    • 指定 T 必须是指定类的子类或本身。

    • 使用 where T : BaseClass 表示。

  5. 构造函数约束(Constructor Constraint):

    • 指定 T 必须有一个公开的无参数构造函数。

    • 使用 where T : new() 表示。

    • 必须写在最后面

  6. 多重约束(Multiple Constraints):

    • 可以同时使用多个约束来进一步限制 T

    • 使用 where T : class, IInterface1, IInterface2 表示。

  7. 类型参数约束(Type Parameter Constraint):

    • 从C# 7.1开始,可以使用特定的类型作为约束,要求 T 是给定类型的子类或实现给定接口。

    • 使用 where T : SomeType 表示。

  8. null 约束(Null Constraint):

    • 从C# 8.0开始,可以指定引用类型参数可以为 null

    • 使用 where T : class? 表示 T 可以是 null

引用类型:数组、类、接口、委托、object、字符串

值类型:结构体类型struct/int,double ,bool,枚举

相关推荐

  1. C#where约束

    2024-07-13 13:24:03       22 阅读
  2. 数据库约束

    2024-07-13 13:24:03       37 阅读
  3. torch.where()并行方式实现

    2024-07-13 13:24:03       77 阅读
  4. MySQL约束(七)

    2024-07-13 13:24:03       43 阅读
  5. CSS :is(), :where(), 和 :has() 选择器简介

    2024-07-13 13:24:03       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 13:24:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 13:24:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 13:24:03       57 阅读
  4. Python语言-面向对象

    2024-07-13 13:24:03       68 阅读

热门阅读

  1. ABP框架中的ISoftDelete与软删除

    2024-07-13 13:24:03       24 阅读
  2. 三级_网络技术_13_局域网技术基础及应用

    2024-07-13 13:24:03       22 阅读
  3. 服务器数据出现丢失该怎样恢复?

    2024-07-13 13:24:03       16 阅读
  4. React中使用usePrevious的意义是什么,为啥要用它

    2024-07-13 13:24:03       18 阅读
  5. Spring:SpringBoot为什么可以使用Jar包启动

    2024-07-13 13:24:03       18 阅读
  6. ubuntu安装k8s+docker运行英伟达gpu cuda

    2024-07-13 13:24:03       22 阅读
  7. 使用Python绘制百分比堆积柱形图

    2024-07-13 13:24:03       21 阅读
  8. Memcached负载均衡:揭秘高效缓存分发策略

    2024-07-13 13:24:03       21 阅读
  9. Mybatis-SQL注入讲解及#预处理与$的区别

    2024-07-13 13:24:03       19 阅读
  10. 变分法笔记1

    2024-07-13 13:24:03       22 阅读
  11. 将独热码应用到神经网络中

    2024-07-13 13:24:03       21 阅读
  12. SpinalHDL之实用工具(下篇)

    2024-07-13 13:24:03       26 阅读