C#4.0图解教程 - 第15章 委托
myDel delVar;
delVar = new myDel(Elx.StandAndUp);
注意:
方法具有和委托相匹配的返回类型和签名。
快捷语法:
delVar = Elx.StandAndUp;
Elx.StandAndUp 不再被变量delVal引用。它会被垃圾回收器回收。
delVal引用新方法,TNT.Bang。
在实用+=运算符时,实际上是创建一个新委托,调用列表为左边的委托加上右边的委托,赋值给变量delVal.
实用参数调用委托就会实用相同的参数值(例如55),调用列表里的每一个成员。
-
delegate void myDel(int x);
-
class Elx
-
{
-
public static void StandAndUp(int xI)
-
{
-
Console.WriteLine("{0}让我我坐着又起来", xI);
-
}
-
}
-
class TNT
-
{
-
public static void Bang(int xI)
-
{
-
Console.WriteLine("{0}炸弹爆炸", xI);
-
}
-
}
-
class Program
-
{
-
static void Main(string[] args)
-
{
-
myDel delVar;
-
delVar = new myDel(Elx.StandAndUp);
-
delVar = Elx.StandAndUp;
-
delVar += TNT.Bang;
-
delVar(55);
-
}
-
}
delVar(55);
△调用列表中最后一个方法返回的值就是委托调用返回的值。
△调用列表中所有其他方法的返回值都会被忽略。
-
using System;
-
namespace Examples
-
{
-
delegate int MyDel(); // Declare method with return value.
-
class MyClass
-
{
-
int IntValue = 5;
-
public int Add2() { IntValue += 2; return IntValue; }
-
public int Add3() { IntValue += 3; return IntValue; }
-
}
-
class Program
-
{
-
static void Main()
-
{
-
MyClass mc = new MyClass();
-
MyDel mDel = mc.Add2; // Create and initialize the delegate.
-
mDel += mc.Add3; // Add a method.
-
mDel += mc.Add2; // Add a method.
-
Console.WriteLine("Value: {0}", mDel());
-
}
-
}
-
}
delegate(int x)
{
return x+20;
}
关键字 参数列表 语句块
delegate ( Paranmenter ) { ImplementationCode }
删除delegate方法
在参数列表和匿名方法主体之间放入=>。
MyDel del = delegate( int x ) { return x+20 }; //匿名方法
MyDel del = ( int x ) => { return x+20 }; //Lambda表达式
-
delegate double MyDel(int par);
-
class Program
-
{
-
static void Main()
-
{
-
MyDel del = delegate(int x) { return x + 1; }; // Anonymous method
-
MyDel le1 = (int x) => { return x + 1; }; // Lambda expression
-
MyDel le2 = (x) => { return x + 1; };
-
MyDel le3 = x => { return x + 1; };
-
MyDel le4 = x => x + 1;
-
Console.WriteLine("{0}", del(12));
-
Console.WriteLine("{0}", le1(12));
-
Console.WriteLine("{0}", le2(12));
-
Console.WriteLine("{0}", le3(12));
-
Console.WriteLine("{0}", le4(12));
-
}
-
}
下面le1~le4都是相等的。
MyDel le1 = (int x) => { return x + 1; }; // Lambda expression
MyDel le2 = (x) => { return x + 1; };
MyDel le3 = x => { return x + 1; };
MyDel le4 = x => x + 1;
作者:【唐】三三
出处:https://www.cnblogs.com/tangge/archive/2013/01/08/2850833.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2011-01-08 图片提交按钮和重复提交表单
2011-01-08 利用c#和webbrowser轻松打造注册机和回帖机