c# 匿名函数分析
答案:2 悬赏:40 手机版
解决时间 2021-02-15 17:35
- 提问者网友:别再叽里呱啦
- 2021-02-14 18:20
分析一下c#3.0的匿名函数,我知道使用=>后不必创建一个单独的方法,减少实例化委托所需的编码系统开销.但是不太清楚怎么用,和转换成一个简单的方法.请简单说明一下用途,用自己的语言描述,不要复制 资料网上多的是.
最佳答案
- 五星知识达人网友:拜訪者
- 2021-02-14 18:33
你说的那些仅仅是形式上是和委托一样,但是C#编译器在后台做了很多东西,匿名函数其实从简单的介绍的话,是没有名字的函数,更严格一些,匿名函数是闭包的一个实现,也就是C#通过兰步达表达式(匿名函数)实现了闭包,通过闭包,可以改变局部变量的声明周期,因此闭包有很多很特殊和奇妙的引用,这方面的知识你可以网上搜索一下,很多。
全部回答
- 1楼网友:轮獄道
- 2021-02-14 19:18
c#的匿名函数一般和委托、事件等相联系。是从c#2.0的匿名函数演变的(准确讲,c#3.0之后是lumbda表达式):
有一个特殊的委托func,拿他开涮:
func<string> func = ()=>"hello world!";
实际上函数被编译成为这个样子:
func<string> func = delegate(){return "hello world!";}
进一步被解析成这个样子(内存中,匿名函数和方法):
func<string> func = new anoymousclass().anoymousmethod;
public class anoymousclass
{
public string anoymousmethod()
{
return "hello world!";
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯