ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

C#五种泛型约束

C#五种泛型约束 五种泛型约束1.where T : struct作用强制泛型只能是值类型int、bool、struct特性值类型默认不允许赋值null2.where T : class作用强制泛型只能是引用类型自定义类、string、接口特性变量可以赋值为null。3.where T : new()作用要求类型必须具备无参构造函数限制抽象类、只存在带参构造的普通类无法满足该约束用途可以在泛型内部使用new T()实例化对象。4. 基类约束where T : 父类名称publicclassRepositoryTwhereT:BaseEntity约束含义T必须是BaseEntity的子类。之前代码能够直接书写entity.Id的根本原因编译器通过约束判定 T 继承 BaseEntity必然包含 Id 属性。5. 接口约束where T : 接口名称publicinterfaceIHasName{stringName{get;set;}}publicclassDemoTwhereT:IHasName{}要求泛型类型必须实现指定接口。多约束叠加规则多个约束为并且 ()关系必须全部满足书写顺序固定不可打乱基类父类约束 → 接口约束 → class/struct → new() csharp // 示例T继承BaseEntity、实现2个接口、属于引用类型、有无参构造 public void SaveT(T entity) where T : BaseEntity, IHasName, ILog, class, new() { }
返回列表