【C#】 匿名函数

本文详细介绍了C#中匿名函数的定义、语法以及如何作为委托和事件的参数或返回值。强调了其在函数传递和返回中的使用,同时也提到了作为委托变量组成部分的匿名函数无法单独移除的局限性。最后给出了一个练习题来巩固理解。
摘要由CSDN通过智能技术生成

基本概念:没有名字的函数,主要是配合委托和事件使用。

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

使用

  1. 函数中传递委托参数;

  2. 委托或事件赋值。

  3. 实例

//无参无返回值匿名函数
Action action1 = delegate ()
{
    Console.WriteLine("===这是一个无参无返回值的匿名函数===");
};
action1();
//有参无返回值匿名函数
Action<int> action2 = delegate (int value)
{
    Console.WriteLine("===这是一个有参无返回值的匿名函数===");
    Console.WriteLine("参数为:"+value);
};
action2(2);
//无参有返回值匿名函数
Func<string> func1 = delegate ()
{
    Console.WriteLine("===这是一个无参有返回值的匿名函数===");
    return "这是返回值";
};
Console.WriteLine(func1());
//有参有返回值匿名函数
Func<int,string> func2 = delegate (int value)
{
    Console.WriteLine("===这是一个有参有返回值的匿名函数===");
    Console.WriteLine("参数为:" + value);
    return "这是返回值";
};
Console.WriteLine(func2(1432));
  1. 一般情况下作为函数参数传递或者作为函数返回值
//函数参数传递
Test test = new Test();
test.TestFun(delegate ()
{
    Console.WriteLine("作为函数参数进行传递");
});
//函数返回值
test.TestFun3()();

class Test
{
    //函数参数传递
    public void TestFun(Action action)
    {
        Console.WriteLine("这是匿名函数作为函数参数传递使用");
        action();
    }
    //函数返回值
    public Action TestFun2(Action action)
    {
        Console.WriteLine("这是匿名函数作为函数返回值使用");
        return action;
    }
    public Action TestFun3()
    {
        return delegate ()
        {
            Console.WriteLine("这是匿名函数作为函数返回值使用");
        };
    }
}

缺点:添加到委托或事件变量中的匿名函数无法单独移除。

练习题

//练习题
//写一个函数传入一个整数,返回一个函数
//之后执行这个匿名函数时传入一个整数和之前那个函数传入的数相乘返回结果
Func<int, int> IntegerTest(int value)
{
    return delegate (int value1)
    {
        return value * value1;
    };
}
Console.WriteLine(IntegerTest(5)(100));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值