首页 > 编程语言 >观《深入理解C#》有感---泛型五种约束

观《深入理解C#》有感---泛型五种约束

时间:2024-07-10 20:56:57浏览次数:10  
标签:Sample C# 约束 --- 类型 泛型 实参 where class

一、引用类型约束

class Sample<T> where T : class

类型实参可以是:
任何类:	Sample<string>
接口:	Sample<IDisposable>
数组:	Sample<int[]>
委托:	Sample<Action>

二、值类型约束

class Sample<T> where T : struct

类型实参可以是:
值类型:	Sample<int>
枚举:	Sample<Enum>

三、构造函数类型约束

class Sample<T> where T : new()

它检查类型实参是否有一个可用于创建类型实参的无参构造函数(这适用于所有值类型)

四、转换类型约束
image
有一点要注意,约束类不能是System.ValueType或者密封类或者结构体

五、组合约束
image

标签:Sample,C#,约束,---,类型,泛型,实参,where,class
From: https://www.cnblogs.com/chenxiayun/p/18294957

相关文章

  • Canvas:实现在线画板操作
    想象一下,用几行代码就能创造出如此逼真的图像和动画,仿佛将艺术与科技完美融合,前端开发的Canvas技术正是这个数字化时代中最具魔力的一环,它不仅仅是网页的一部分,更是一个无限创意的画布,一个让你的想象力自由驰骋的平台。目录基础页面搭建绘画操作按钮点击事件最后总结......
  • C# 轻量级 ORM 框架 NPoco 的简单应用
    目录简介快速入门安装NuGet包实体类User数据库类DbFactory增删改查InsertSelectUpdateDelete总结简介NPoco是PetaPoco的一个分支,具有一些额外的功能,截至现在github星数839。NPoco中文资料没多少,我是被博客园群友推荐的,这几天简单尝试了一下:github:https://github.com......
  • G65 线性基+贪心法 P4570 [BJWC2011] 元素
    视频链接: P4570[BJWC2011]元素-洛谷|计算机科学教育新生态(luogu.com.cn)//线性基O(60*n)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;#defineLLlonglongconstLLN=1005;intn,m;structnode{LLnum,val;}a......
  • HashMap和ConcurrentHashMap的底层实现原理
    (1)HashMap底层实现原理在JDK1.7版本之前,HashMap数据结构是数组和链表,HashMap通过哈希算法将元素的键(Key)映射到数组中的槽位(Bucket)。如果多个键映射到同一个槽位,它们会以链表的形式存储在同一个槽位上,因为链表的查询时间是O(n),所以冲突很严重,一个索引上的链表非常长,......
  • B/S C/S架构系统的优缺点 各自的应用场景是什么
    B/S架构(Browser/Server,浏览器/服务器架构)的优点:易于部署和维护:无需在每个客户端安装软件,只需在服务器端进行更新和维护。跨平台性好:用户通过各种操作系统的浏览器即可访问,不受操作系统限制。成本较低:减少了客户端软件的分发和更新成本。B/S架构的缺点:性能和响应......
  • Linux-shell编程入门基础
    目录前言Shell编程bash特性shell作用域变量环境变量$特殊变量$特殊状态变量$特殊符号(很重要)其他内置shell命令shell语法的子串截取统计指令执行时间练习shell特殊扩展变量父子shell的理解内置和外置命令区别数值计算双括号(())运算letexprexpr模式匹配bcawk中括号shell的条件判......
  • WPF customize DelegateCommand via implementation interface System.Windows.Input.
    publicclassDelCmd:ICommand{privatereadonlyAction<Object>execute;privatereadonlyPredicate<Object>canExecute;publicDelCmd(Action<object>executeValue,Predicate<object>canExecuteValue){execut......
  • Modbus转Profinet网关模块连PLC与流量计通讯案例
    一、案例背景在饮品加工厂中,会涉及到流量计的使用,然而达到对流量计的精准控制和数据采集需要用到PLC,由于PLC和流量计可能使用不同的通信协议(如Profinet和Modbus),造成两者不能自接进行通讯和数据传输。在不增加编程工作量的情况下,可使用Modbus转Profinet网关模块来实现。二、Mo......
  • 冒泡排序---qsort函数
    1.一般冒泡排序的方法首先来看一般的冒泡排序的写法,这种方法只能排序整型类型的数据代码如下:voidbubble_sort(intarr[],intsz){ inti=0; for(i=0;i<sz-1;i++) //排序的次数是sz-1次 { intj=0; for(j=0;j<sz-1-i;j++) //每一次排序过......
  • KAN: Kolmogorov-Arnold Networks (arXiv 2024)
    KAN官方代码库:https://github.com/KindXiaoming/pykan官方tutorials:https://kindxiaoming.github.io/pykan/目录AbstractKolmogorov–ArnoldNetworks(KAN)Kolmogorov-ArnoldRepresentationtheoremKANarchitectureImplementationdetailsKAN’sApproximation......