
CSharp中委托(一)委托、匿名函数、lambda表达式、多播委托、窗体传值、泛型委托
发布日期:2021-05-08 04:51:55
浏览次数:9
分类:精选文章
本文共 2323 字,大约阅读时间需要 7 分钟。
委托在C#中是一种引用传值机制,允许将一个方法作为参数传递给另一个方法,从而实现代码的复用。通过委托,可以避免重复编写相同功能的代码,提高开发效率。
一、委托的基本概念
委托的核心思想是将一个方法的引用作为参数传递给另一个方法。这样,调用方法的方法无需直接关心实现细节,只需调用委托即可。委托在C#中通过delegate
关键字声明,参数必须与被指向的方法签名一致。
二、实现三个需求的方法
1. 将字符串数组中的每个元素转换为大写
使用StrToUpper
方法:
public static void StrToUpper(string[] name){ for (int i = 0; i < name.Length; i++) { name[i] = name[i].ToUpper(); }}
2. 将字符串数组中的每个元素转换为小写
使用StrToLower
方法:
public static void StrToLower(string[] name){ for (int i = 0; i < name.Length; i++) { name[i] = name[i].ToLower(); }}
3. 将字符串数组中的每个元素两边加上双引号
使用StrSYH
方法:
public static void StrSYH(string[] name){ for (int i = 0; i < name.Length; i++) { name[i] = "\"" + name[i] + "\""; }}
三、使用委托实现三个需求
1. 声明委托类型
public delegate void DelStrTo(string[] name);
2. 创建委托对象并赋值方法
DelStrTo del = new DelStrTo(StrToUpper);del(names);
3. 使用匿名函数实现委托
DelStrTo del = delegate (string[] names){ for (int i = 0; i < names.Length; i++) { names[i] = names[i].ToUpper(); }};del(names);
4. 使用lambda表达式实现委托
DelStrTo del = (string[] names) =>{ for (int i = 0; i < names.Length; i++) { names[i] = names[i].ToUpper(); }};del(names);
四、多播委托
委托可以指向多个方法,通过加法和移除方法实现多播:
DelTest del = T1;del += T2;del += T3;del -= T3;del -= T1;del();
五、窗体传值示例
通过委托实现跨窗体数据传递:
public delegate void DelShowMsg(string str);public partial class Form1 : Form{ public Form1() { InitializeComponent(); } private void btnfm1_Click(object sender, EventArgs e) { Form2 fm = new Form2(ShowMsg); fm.Show(); } public void ShowMsg(string str) { label1.Text = str; }}public partial class Form2 : Form{ public DelShowMsg _del; public Form2(DelShowMsg del) { this._del = del; InitializeComponent(); } private void btnfm2_Click(object sender, EventArgs e) { _del(textBox1.Text); }}
六、泛型委托
泛型委托允许任意类型的比较:
public delegate int DelCompare(T t1, T t2);public static T GetMax (T[] nums, DelCompare del){ T max = nums[0]; for (int i = 0; i < nums.Length; i++) { if (del(max, nums[i]) < 0) { max = nums[i]; } } return max;}public static int Compare1(int n1, int n2){ return n1 - n2;}
七、总结
委托是一种强大的工具,能够有效减少代码重复,提高代码的可维护性和复用性。在实际开发中,选择合适的委托方式可以提升效率,实现代码的灵活性。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月08日 17时29分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
layui表格checkbox选择全选样式及功能
2019-03-05
mxsrvs支持thinkphp3.2伪静态
2019-03-05
mui HTML5 plus 下载文件
2019-03-05
环信SDK 踩坑记webIM篇(一)
2019-03-05
短信验证码倒计时代码
2019-03-05
【LeetCode】归并排序(python版)
2019-03-05
通信基础知识
2019-03-05
DSP开发板准备
2019-03-05
测试基本
2019-03-05
5.redo undo
2019-03-05
《JVM的内存》
2019-03-05
c++中istringstream及ostringstream超详细说明
2019-03-05
c++中ifstream及ofstream超详细说明
2019-03-05
c++中endl操作符以及它的兄弟们
2019-03-05
c++中explicit和mutable关键字探究
2019-03-05
c语言结构体字节对齐详解
2019-03-05
linux c/c++面试知识点整理(八)
2019-03-05
epoll的基本使用
2019-03-05
linux网络编程系列(十二)--滑动窗口、拥塞控制、断线重连机制
2019-03-05