C# 泛型使用案例_C# 泛型使用整理

devtools/2024/12/22 21:42:56/

一、系统自带常用的泛型

1.字典,集合

//字典
Dictionary<string, int> dic = new Dictionary<string, int>();
//泛型集合
List<int> list = new List<int>();

2.泛型委托,输入参数,输出参数

//泛型 委托---输出参数
Func<int> show = () =>
{int num = 0;for (int i = 0; i < 10; i++){Console.WriteLine(i);num += i;}return num;
};
Console.WriteLine(show()); //执行方法返回结果//泛型 委托--输入参数
Action<int> go = (num) =>
{for (int i = 0; i < num; i++){Console.WriteLine(num);}
};
go(10);//输入参数执行发放,没有返回结果

3.泛型任务,多线程,异步编程

//泛型任务---多线程异步
Task<string> task = Task.Run(() =>
{return "测试内容";
});
Console.WriteLine(task.Result);

二、泛型方法,使用案例

1. 任意类型数据交换

/// <summary>
/// 交换任意两个变量的值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="arg0"></param>
/// <param name="arg1"></param>
public static void Swap<T>(ref T arg0,ref T arg1)
{T temp = arg0;arg0 = arg1;arg1 = temp;
}
int num1 = 1;
int num2 = 2;
Swap<int>(ref num1, ref num2);
Console.WriteLine(num1);//打印:2
Console.WriteLine(num2);//打印:1string str1 = "张三";
string str2 = "lisi";
Swap(ref str1,ref  str2);
Console.WriteLine(str1);//打印:lisi
Console.WriteLine(str2);//打印:张三

2. 自定义规则和类型,求和处理

//自定义泛型方法
//自定义求和
//int 类型 相加,decimal类型相加 只计算整数相加,字符串类型 转换成整数相加; 学生类型 年龄相加
//返回整数,字符串
public static T Sum<T>(T arg0, T arg1)
{if (typeof(T) == typeof(Int32)){dynamic num1 = arg0;dynamic num2 = arg1;T arg3 = num1 + num2;return arg3;}else if (typeof(T) == typeof(double)){dynamic num1 = Convert.ToInt32(arg0);dynamic num2 = Convert.ToInt32(arg1);T arg3 = num1 + num2;return arg3;}else if (typeof(T) == typeof(string)){dynamic num1 = Convert.ToInt32(arg0);dynamic num2 = Convert.ToInt32(arg1);dynamic arg3 = (num1 + num2).ToString();return arg3;}else if (typeof(T) == typeof(Student)){Student num1 = arg0 as Student;Student num2 = arg1 as Student;dynamic arg3 = new Student();arg3.Age = num1.Age + num2.Age;return arg3;}return default(T);
}

三、泛型类,自定义泛型类

    //自定义泛型类//定义泛型类,存储列表, 共同行为1 对象+对象 返回数组集合; 共同行为2 传入对象集合,执行打印public class MyStudent<T>{/// <summary>/// 对象组合/// </summary>/// <param name="arg0"></param>/// <param name="arg1"></param>/// <returns></returns>public List<T> Add(T arg0, T arg1){List<T> list = new List<T>();list.Add(arg0);list.Add(arg1);return list;}/// <summary>/// 遍历打印/// </summary>/// <param name="list"></param>public void Foreach(List<T> list){foreach (var item in list){Console.WriteLine(item);}}}

使用案例:

MyStudent<int> list1 = new MyStudent<int>();
List<int> result1 = list1.Add(1, 2);
list1.Foreach(result1);Student stu1 = new Student();
stu1.Age = 10;
Student stu2 = new Student();
stu2.Age = 20;
MyStudent<Student> list2 = new MyStudent<Student>();
List<Student> result2 = list2.Add(stu1,stu2);
list2.Foreach(result2);

更多:


http://www.ppmy.cn/devtools/122273.html

相关文章

如何快速切换电脑的ip地址

在当今的数字化时代&#xff0c;IP地址作为网络身份的重要标识&#xff0c;其重要性日益凸显。无论是出于保护个人隐私的需要&#xff0c;还是为了访问特定的网络服务等&#xff0c;快速切换电脑的IP地址已成为许多用户的迫切需求。本文将为你介绍几种实用的方法&#xff0c;帮…

安装Rust

Rust 是一种系统级编程语言&#xff0c;旨在提供高性能和内存安全&#xff0c;同时避免常见的编程错误。 由 Mozilla Research 推出&#xff0c;Rust 自推出以来因其独特的设计理念和强大的功能而在开发者社区中迅速获得了广泛的关注和采用。 curl --proto ‘https’ --tlsv1.2…

MQTT--Java整合EMQX

目录 1、简介2、准备3、使用步骤3.1 引入依赖3.2 创建生产者和消费者3.3 测试 总结PS: 1、简介 本文章实现了一个简单的MQTT客户端&#xff0c;使用Eclipse Paho库让Java和EMQX整合&#xff0c;测试客户端初始化时配置Broker地址、客户端ID、用户名和密码。连接成功后&#xf…

服务器使用了代理ip,遇到流量攻击,会对服务器有影响吗

当服务器使用代理IP并遭遇流量攻击&#xff08;如DDoS攻击&#xff09;时&#xff0c;仍然会对服务器产生影响。以下是关于这种情况的一些详细分析&#xff1a; 1. 流量攻击的性质 流量攻击的目的是通过发送大量请求来耗尽目标服务器的资源或带宽&#xff0c;导致服务中断或不…

如何实现两个标签页之间的通信

两个标签页之间可以通过以下几种方式实现通信&#xff1a; Local Storage: 使用 localStorage 进行跨标签页通信。可以在一个标签页中写入数据&#xff0c;另一个标签页可以侦听 storage 事件&#xff0c;获取更新。示例&#xff1a;// 在第一个标签页中设置 localStorage.setI…

力扣刷题 | 两数之和

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 给定一个整数数组 nums 和…

c基础面试题

1.static和const的作用 static意为静态的&#xff0c;在C语言中可以修饰变量。如果是全局变量则只能在当前文件范围访问。 如果是函数内的局部变量则延长生命周期到整个程序。这意味着如果函数被多次调用&#xff0c;这个变量不会被重新初始化&#xff0c;而是保留上次调用结…

中间件介绍

可以把中间件想象成是在应用和系统之间搭建的一座桥梁&#xff0c;或者说是一个“翻译官”和“中转站”。它处在操作系统、网络和数据库之上&#xff0c;应用软件的下层&#xff0c;负责实现应用软件之间的互联互通&#xff0c;使得应用软件能够更方便、高效地进行数据交换和通…