news 2026/11/4 12:51:33

深入理解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/11/2 3:27:57

【2025 arXiv】Reasoning Within the Mind: Dynamic Multimodal Interleaving in Latent Space

这篇论文的核心突破在于将多模态推理从“显式的文本生成”转移到了“隐式的潜在空间优化”,并利用“置信度”这一信号实现了类似人类的动态视觉回溯,从而兼顾了推理的深度、准确性和效率。 paper: https://arxiv.org/pdf/2512.12623 code: https://github.com/eric-ai-lab/DM…

作者头像 李华
网站建设 2026/11/2 3:27:35

构建安全可控的企业知识库:anything-llm解决方案

构建安全可控的企业知识库&#xff1a;anything-llm解决方案 在企业数字化转型的浪潮中&#xff0c;一个现实问题正日益凸显&#xff1a;员工每天花数小时翻找政策文件、客服重复回答相同问题、新成员难以快速掌握内部流程——信息就在那里&#xff0c;却“看得见、摸不着”。传…

作者头像 李华
网站建设 2026/11/2 3:36:46

工业控制中CCS安装的实战案例解析

工业控制中CCS安装的实战案例解析&#xff1a;从零搭建稳定开发环境在工业自动化项目中&#xff0c;一个稳定、高效的嵌入式开发环境&#xff0c;往往决定了产品迭代的速度和系统调试的成败。而当我们选用TI C2000系列DSP作为主控芯片时&#xff0c;Code Composer Studio&#…

作者头像 李华
网站建设 2026/11/2 3:15:18

【参数估计】基于WSO算法的太阳能光伏模型参数估计附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/11/2 3:50:03

MyBatis 环境配置完整教程(从 0 到 1)

一、什么是 MyBatis&#xff1f;MyBatis 是一个优秀的 持久层&#xff08;ORM&#xff09;框架&#xff0c;它将 Java 对象与数据库表进行映射&#xff0c;通过 XML 或注解 的方式编写 SQL。MyBatis 的特点半自动 ORM&#xff08;SQL 由程序员自己写&#xff09;支持 动态 SQL避…

作者头像 李华