news 2026/2/9 19:16:38

深入理解C#泛型:从方法到约束

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解C#泛型:从方法到约束

《泛型》

泛型:广泛的类型,一般给方法传入类型的作用,关键字<T>
//定义方法的时候可以把参数或者方法的返回值写成泛型,调用的时候传递实参决定方法的返回值类型或者参数类型

//通俗:假设想方法的参数类型不一样,可以传递整数也可以传递其他类型,可以把参数类型定义成泛型

//语法:修饰符 静态/非静态 方法返回值 方法名<T>(T a,T b){}
//凡是所有T地方类型是一致的
static void Test1<T>(T a)
{
}

/传递两个参数 根据传入的参数类型 返回一个泛型数组,
static T[] Test3<T>(T a,int count)//啊传递的元素,count是数组的个数
{
T[]t1=new T[count];//定义泛型数组 长度为count
for (int i = 0; i < count; i++)//t1添加元素
{
t1[i] = a;//把a添加t1数组里面 添加count次
}
return t1;
}

//定义泛型方法
int[]is1= Test3<int>(10,20);
Array.ForEach(is1, i => { Console.WriteLine(i + "--------"); });

string[]is2= Test3<string>("hello", 20);
Array.ForEach(is2, i => { Console.WriteLine(i + "--------"); });
《泛型类》

//1泛型方法:只需要在方法名字后面加<T,T1,T2>,为了参数类型和返回值类型,当然也可以把参数和返回值类型定义成普通类型
//2泛型类:在类名后面添加<T>,目的把类型传入类当中
//3泛型接口:在接口后面添加泛型,目的把类型传接口当中

//4泛型约束:泛型本身没有限制类型但是通过where对泛型进行限制范围

//泛型字母可以写任意字母

《泛型约束》

static void Test1<T>(T a)
{ }
//where T:struct 限制T只能值类型
static void Test2<T>(T a, T b) where T : struct { }
//where T:class 限制T只能引用类型
static void Test3<T>(T a, T b) where T : class { }
//where T :new()必须有一个不带参数的构造函数的类
static void Test4<T>(T a, T b)where T : new() { }
//where T : IPeople必须是实现接口的类型,或者实现接口类的派生类,本例可以是Student ,还可以继承与Student的子类,SmallStudent
static void Test5<T>(T a, T b) where T : IPeople { }
//where T :U 限制传入类型 要么T和U同一个类型,要么T是U的子类
static void Test6<T,U>(T a, U b) where T : U { }

interface IPeople { }
class Student : IPeople { }//Student实现接口
class SmallStuden :Student { }//SmallStudent继承了Student
class People
{
public People() { }
public People(int a) { }//有参数的构造
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 0:49:56

Burp Suite 插件 | SQL 注入自定义扫描和分析

工具介绍 SQL Injection Scout 是一个用于 Burp Suite 的扩展&#xff0c;专为帮助安全研究人员和开发人员检测和分析 SQL 注入漏洞而设计。该扩展提供了丰富的配置选项和直观的用户界面&#xff0c;便于用户自定义扫描和分析过程。 &#x1f4af; 功能特性 被动检测SQL&…

作者头像 李华
网站建设 2026/2/4 22:10:49

Linux系统编程——网络:从 OSI 到 UDP 通信实践

目录 一、OSI 与 TCP/IP 模型 1.OSI 模型&#xff08;7 层&#xff09; 2.TCP/IP 模型&#xff08;4 层&#xff09; 二、Linux 网络配置&#xff1a;命令与文件 1. 永久配置 IP 2.临时配置 IP 3.网络调试命令 三、网络编程核心概念&#xff1a;Socket 与字节序 1.Soc…

作者头像 李华
网站建设 2026/1/30 8:00:36

Excel超实用技能,一键批量快速合并相同内容单元格,瞬间搞定

经常使用Excel整理分析数据的小伙伴可能会有这样的烦恼,拿到一个工作簿后,工作表中有很多重复的数据,而且这些数据对应的数值可能各不相同,怎么快速合并这些相同内容的单元格呢? 熟知Excel操作的小伙伴,动动手指也就是几分钟的事情。使用高版本Excel的小伙伴更是几十秒就…

作者头像 李华
网站建设 2026/1/30 18:20:49

Java虚拟机面试题:内存管理(下)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

作者头像 李华