news 2026/4/18 13:51:18

深入理解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/4/18 5:33:57

2025年中国消费蝶变:“超级供应链”如何重构供需逻辑?

文/李乐编辑/子夜2025年的中国消费市场&#xff0c;藏着太多看似偶然的走红&#xff1a;Labubu盲盒热销&#xff0c;其隐藏款溢价翻几倍&#xff0c;奶皮子糖葫芦火到全国大街小巷&#xff0c;景德镇鸡排哥的摊位前总排着长队&#xff0c;《疯狂动物城2》的周边刚上架就售罄………

作者头像 李华
网站建设 2026/4/17 21:44:02

DNF私服增幅31的bug?这个你知道吗?

DNF是一款深受玩家喜爱的多人在线角色扮演游戏。自2008年在中国上线以来&#xff0c;凭借其独特的横版过关玩法和丰富的职业系统吸引了大量忠实粉丝。然而&#xff0c;随着游戏的发展&#xff0c;一些玩家开始寻求不同于官方服务器的游戏体验&#xff0c;这催生了“私服”的出现…

作者头像 李华
网站建设 2026/4/18 8:31:40

线性拟合模型

线性拟合模型 一、数据准备部分 import numpy as np import keras import matplotlib.pyplot as plttrain_X np.asarray([30.0,40.0,60.0,80.0,100.0,120.0,140.0]) train_Y np.asarray([320.0,360.0,400.0,455.0,490.0,546.0,580.0]) train_X / 100.0 train_Y / 100.0train_…

作者头像 李华
网站建设 2026/4/18 8:42:14

深度学习入门

文章目录一、什么是深度学习&#xff1f;二、神经网络基础1. 神经元与权重2. 激活函数三、从感知器到多层感知器1. 感知器&#xff08;Perceptron&#xff09;2. 多层感知器&#xff08;MLP&#xff09;四、神经网络的训练方法1. 损失函数2. 梯度下降3. 反向传播&#xff08;Ba…

作者头像 李华
网站建设 2026/4/18 8:34:03

程序员接单:2025 全渠道平台指南与实操建议

目录 引程聚宝UpworkFiverr猪八戒网Freelancer一品威客ToptalRemoteOKWeWorkRemotelyCodementorTopcoderGuru结语 引 近年来&#xff0c;程序员接单成为越来越多开发者提升收入与积累项目经验的重要方式。市场环境变化、就业结构调整、远程协作的普及&#xff0c;让自由接单从…

作者头像 李华