C#中的匿名函数
来源:互联网 发布:ubuntu u盘刻录工具 编辑:程序博客网 时间:2024/05/21 00:56
匿名方法:
C# 支持用于调用一个或多个方法的委托 (delegate)。委托提供运算符和方法来添加或删除目标方法,它也可以在整个 .NET 框架中广泛地用于事件、回调、异步调用、多线程等。
常规委托:
class SomeClass{ delegate void SomeDelegate(); public void InvokeMethod() { SomeDelegate del = new SomeDelegate(SomeMethod); del(); } void SomeMethod() { MessageBox.Show("Hello"); }}
<span style="font-family:Arial;"><strong>可以用一个匿名方法来定义和实现这个方法:</strong></span>
class SomeClass{ delegate void SomeDelegate(); public void InvokeMethod() { SomeDelegate del = delegate() { MessageBox.Show("Hello"); }; del(); }}
=============================================================class SomeClass{ delegate void SomeDelegate(); public void SomeMethod() { InvokeDelegate(delegate(){MessageBox.Show("Hello");}); } void InvokeDelegate(SomeDelegate del) { del(); }}<span style="font-family:Arial;"><strong>将参数传递到匿名方法:</strong></span>
<strong><span style="font-family:Arial;"></span></strong><pre class="codeSample" name="code" style="white-space: pre-wrap; word-wrap: break-word;">class SomeClass{ delegate void SomeDelegate(string str); public void InvokeMethod() { SomeDelegate del = delegate(string str) { MessageBox.Show(str); }; del("Hello"); }}
<strong><span style="font-family:Arial;">一般的匿名方法:</span></strong><pre class="codeSample" name="code" style="white-space: pre-wrap; word-wrap: break-word;">class SomeClass<T>{ delegate void SomeDelegate(T t); public void InvokeMethod(T t) { SomeDelegate del = delegate(T item){...} del(t); }}
<strong>注意点:</strong>1.如果匿名方法没有参数,则可以在 delegate 关键字后面使用一对空括号:
class SomeClass{delegate void SomeDelegate();public void InvokeMethod(){SomeDelegate del = delegate(){MessageBox.Show("Hello");};del();}}
<span style="font-family:Arial;">2.如果您将 delegate 关键字与后面的空括号一起忽略,</span>
<span style="font-family:Arial;">则您将定义一种特殊的匿名方法,它可以指派给具有任何签名的任何委托:</span>
<pre class="codeSample" name="code" style="white-space: pre-wrap; word-wrap: break-word;">class SomeClass{ delegate void SomeDelegate(string str); public void InvokeMethod() { SomeDelegate del = delegate { MessageBox.Show("Hello"); }; del("Parameter is ignored"); }}
1 0
- C#中的匿名函数
- C#中的匿名函数
- C# 2.0 中的三个匿名函数特性
- C#中的匿名函数和闭包
- C#2.0匿名函数
- C# 匿名函数
- C# 匿名函数委托
- C#中的匿名类型
- C#中的匿名类
- C#3.0中的Lambda表达式和匿名函数。
- C#中的匿名函数使用,类名<T>
- javascript中的匿名函数
- js中的匿名函数
- javascript中的匿名函数
- js中的匿名函数
- js中的匿名函数
- javaScript中的匿名函数
- python中的匿名函数
- 144. Binary Tree Preorder Traversal
- iOS 货币计算
- 山东省第一届ACM省赛题——Phone Number
- mybatis的传入参数#和$的区别
- java杂记之静态方法和非静态方法
- C#中的匿名函数
- jQuery.trigger() 函数详解
- ubuntu安装完成后的相关配置
- socket进程间通信
- RST包 - TCP/IP
- Cookie&Session
- C++第2次上机实验(学生成绩)
- Ubuntu下deb包
- Matlab生成归一化直方图