`
luckyjaky
  • 浏览: 111826 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

泛型类型参数的约束

 
阅读更多
class MyClass<T1,T2,T3> 
                where T2:Custom
                where T3:IComparable

 如上:泛型类有三个类型参数,T1是未绑定的,只有Custom类型或从Custom类型继承的类型的类才能使用T2的实参,而对于T3,只有实现IComparable接口的类才能用于类型实参。

 

共有5中约束类型:

  1. 类名:只有这个类型的类或从它继承的类才能用作实例参数。
  2. class:任何引用类型,包括类、数组、委托和接口都可以用作实参。
  3. struct:任何值类型都可以被用作类型实参。
  4. Interface:只有这个接口或者实现这个接口的类型才可以被用作类型实参。
  5. new():任何带有无参公共构造函数的类型都可以用作实参。这叫做构造函数约束。

 

  • 以上5种约束,最多只能有一个主约束(类名、class、struct只能存在一个),如果有则必须放在第一位。
  • 可以存在任意多的接口约束。
  • 如果存在构造函数约束,则必须放在最后。

 

分享到:
评论

相关推荐

    c# 泛型类型参数与约束的深入分析

    代码如下:private void PromptName(T t) {}private void PromptName(Tuser user){}泛型类型参数约束在定义泛型类时,可以对在实例化泛型类时用于类型参数的类型种类施加限制。如果实例化泛型类时使用某个约束所不...

    详解C#泛型的类型参数约束

    主要介绍了C#泛型的类型参数约束的相关资料,文中讲解非常细致,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下

    C#泛型约束的深入理解

    基类约束:指出某个类型必须将指定的类作为基类(或者就是该类本身),才能用作该泛型类型的类型参数。这样的约束一经使用,就必须出现在该类型参数的所有其他约束之前。 代码如下:class MyClassy&lt;T&gt;where T : class...

    介绍C# 泛型类在使用中约束

    访问修饰符 返回类型 泛型方法名 (T 参数)1):无法在泛型方法内部给任何 T 类型创建实例的对象,因为在泛型方法内部不知道传进来的对象有哪些构造函数2):约束是对内部的!(对于泛型方法)约束也是会被继承的!3...

    C#泛型详解由入门到精通.docx

    目录 1. 泛型简介 2 1.1.理解泛型 2 1.2.泛型简介 3 ...3.泛型类型参数 4 4.类型参数的约束 5 5.泛型类 9 6.泛型接口 11 7.泛型方法 13 8.泛型委托 15 9.泛型代码中的默认关键字 17 10.泛型和属性 18

    Java泛型深入学习和总结 看这一篇就足够!

    4.1 不能用基本类型实例化类型参数 4.2 运行时类型查询只适用于原始类型 4.3 泛型类的静态上下文中类型变量失效 4.4 不能创建参数化类型的数组 4.5 不能实例化类型变量 4.6 不能捕获泛型类的实例 五 泛型类型的继承...

    c#自定义泛型类的实现

    闲来无事,自己研究了泛型类的简单的使用,where表示泛型约束,表示泛型类型中的参数只能是car类型,IEnumerable是一个接口,一个集合要支持FOREAch遍历,必须实现IEnumerable接口 代码如下:public class Car { ...

    学习泛型语法2

    编译器只允许将泛型参数隐式强制转换到Object或约束指定的类型 允许您将泛型参数显示强制转换到其他任何接口,但不能将其转换到类型 使用临时的Object变量,将泛型参数强制转换到其他任何类型 使用is和as运算符 ....

    Java语言 泛型讲解案例代码 (泛型类、泛型接口、泛型方法、无界及上下限通配符、泛型对协变和逆变的支持、类型擦除 ...)

    定义泛型类:展示如何定义一个简单的泛型类,以及如何创建该类的实例并使用泛型参数。 泛型方法:演示如何在普通类中定义泛型方法,以及如何调用和使用泛型方法。 类型通配符:展示如何使用类型通配符来增加灵活性,...

    使用新的Delphi编码样式和结构-Delphi 2009语言功能详述

    具体有:泛型介绍、有关泛型的类型规则、Delphi中的泛型、泛型函数、泛型约束、特定类约束、接口约束、接口引用与泛型接口约束、使用预定义泛型约束、使用匿名方法排序、匿名方法的语法和语义、匿名方法变量和参数、...

    C# 2.0中泛型编程初级入门教程.pdf

    本文讨论泛型使用的一般问题,比如为什么要使用泛型、泛型的编写方法、泛型中数据类型的约束、泛型 中静态成员使用要注意的问题、泛型中方法重载的问、泛型方法等,通过这些使我们可以大致了解泛型并掌握 泛型的一般...

    .NETC#汇总 -集合、异常、泛型.rar

    当⼀个泛型参数没有任何约束时,它可以进⾏的操作和运算是⾮常有限的,因为不能对实参进⾏任何类型 上的保证,这时候就需要⽤到泛型约束。

    基于源代码静态分析的C_0x泛型概念抽取

    态分析的泛型概念自动识别方法, 通过对泛型程序中类型参数的使用分析, 从遗产代码中提取有效表达式约束和 关联类型约束, 进而推导出泛型概念. 将该方法应用于C+ + 标准模板库ST L , 可以识别出ST L 算法中绝大部分潜...

    你真的懂Java泛型吗?

    泛型实现 参数化类型 的概念,使代码可以应用于多种类型,解除类或方法与所使用的类型之间的约束。在JDK 1.5开始引入了泛型,但Java实现泛型的方式与C++或C#差异很大。在平常写代码用到泛型时,仿佛一切都来得如此...

    Java-泛型的使用

    在方法上定义的泛型,需要通过调用方法时通过给定的参数来进行约束,所以在方法参数列表内必须要有一个参数是对应声明的自定义泛型。 1.2.2 泛型在类中使用 声明格式; class TypeA { } 类声明自定义泛型,需要...

    2013-01-30 泛型、反射.pdf

    允许程序员在代码中将 变量或参数的类型 先用【类型占位符】来代替,等到运行的时候再根据传入的【类】来替换 通俗:类也可以带参数了!但是这个参数必须是 类型!用来在 类的代码中 暂时代替 类的位置,然后会...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    12.6 委托和接口的逆变和协变泛型类型实参 12.7 泛型方法 12.7.1 泛型方法和类型推断 12.8 泛型和其他成员 12.9 可验证性和约束 12.9.1 主要约束 12.9.2 次要约束 12.9.3 构造器约束 12.9.4 其他可验证性...

    浅析c#范型中的特殊关键字where default

    在看源码的时候看见了where和default,虽说default很常见,但是它的用法我却是第一次看到,哎,基础不扎实啊!...基类约束:指出某个类型必须将指定的类作为基类(或者就是该类本身),才能用作该泛型类型的类型参数

Global site tag (gtag.js) - Google Analytics