我是靠谱客的博主 激昂小海豚,最近开发中收集的这篇文章主要介绍C# 匿名函数1、匿名函数2、基本语法3、使用4、匿名函数的缺点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、匿名函数

没有名字的函数,主要是配合委托和事件进行使用,脱离委托和事件是不会使用匿名函数的

2、基本语法

delegate (参数列表){
      //函数逻辑
};

何时使用?

(1)函数中传递委托参数时

(2)委托和事件赋值时

3、使用

(1)无参无返回

Action a = delegate () {
    Console.WriteLine("匿名函数");
};
a();

(2)有参 

Action<int> a = delegate (int value) {
    Console.WriteLine(value);
};
a(100);

(3)有返回值

直接return,返回值自动识别

Func<string> a = delegate () {
    return "返回值匿名函数";
};
Console.WriteLine(a());

(4)一般情况会作为函数参数传递,或者作为函数返回值

class Test {
    public Action action;
    // 作为参数传递
    public void DoSomeThing(int a, Action action) {
        Console.WriteLine(a);
        action();
    }
    // 作为返回值 
    public Action GetFun() {
        return TestRet;
    }
    public void TestRet() {
    }
    // 或者一步到位
    public Action GetFun2() {
        return delegate () {
            Console.WriteLine("作为返回值的匿名函数");
        };
    }
}

作为参数传递的调用

Test t = new Test();
// 方式一
t.DoSomeThing(100, delegate () {
    Console.WriteLine("作为参数传递的匿名函数");
});
// 方式二
Action ac = delegate () {
    Console.WriteLine("作为参数传递的匿名函数");
};
t.DoSomeThing(100, ac);

作为返回值的调用

// 方式一
Action ac = t.GetFun2();
ac();
// 方式二
t.GetFun2()();

4、匿名函数的缺点

添加到委托或事件容器中后,无法单独移除,只能直接清空

 注意!!!匿名函数会改变变量的生命周期,例如:

static Func<int, int> TestFun(int v) {
return delegate (int i) {
return i * v;
};
}

然后进行调用

Func<int, int> fun = TestFun(2);
Console.WriteLine(fun(3))

可以发现,v的生命周期在TestFun()结束时没有停止

最后

以上就是激昂小海豚为你收集整理的C# 匿名函数1、匿名函数2、基本语法3、使用4、匿名函数的缺点的全部内容,希望文章能够帮你解决C# 匿名函数1、匿名函数2、基本语法3、使用4、匿名函数的缺点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部