这种泛型写法对吗?2个where连在一起一用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这种泛型写法对吗?2个where连在一起一用相关的知识,希望对你有一定的参考价值。

public class C<S, T>
where S : A
where T : B

了一些可用的约束

struct
类型必须是值类型
在类中,需要值类型才能起作用,例如,类中T类型的成员变量是0,表示某种含义

class
类型必须是引用类型
在类中,需要引用类型才能起作用,例如,类中T类型的成员变量是null,表示某种含义

base class
类型必须是基类或继承自基类
在类中,需要继承自基类的某种基本功能,才能起作用

interface
类型必须是接口或实现了接口
在类中,需要接口提供的某种基本功能,才能起作用

new()
类型必须有一个公共的无参构造函数
在类中,需要能实例化T类型的变量,例如在构造函数中实例化
参考技术A 是对的

泛型中Where T:Class和Where T:new()的使用与区别

如下是泛型常用的写法:

class A<T> where T:new()

这是类型参数约束,其中where表示对类型变量T的约束关系。

 

其中,最常用的当属class和new()两种约束。泛型可以是值类型也可以是引用类型,class表示这个T为引用类型new()表示这个泛型必须有构造函数否则不能使用

 

除了class和new()之外,还有其他的约束关系。.NET支持的类型参数约束有以下五种:

where T: class        // T必须是一个类(class)类型,不是结构(structure)类型
where T: new()        // T必须要有一个无参构造函数
where T: struct       // T必须是一个结构类型
where T: NameOfBaseClass    // T必须继承名为NameOfBaseClass的类
where T: NameOfInterface    // T必须实现名为NameOfInterface的接口

以上是关于这种泛型写法对吗?2个where连在一起一用的主要内容,如果未能解决你的问题,请参考以下文章

深入理解C#泛型:new与where关键字全解析

java中<T>问题

《C#零基础入门之百识百例》(八十二)泛型类型参数Where约束 -- 泛型单例

《C#零基础入门之百识百例》(八十二) 泛型类型参数Where约束 -- 泛型单例

在 C# 中将 `is` 运算符与泛型一起使用

Java核心技术-01-谈谈泛型