C# 通过Delegate,action,func关键字创建委托匿名方法

在C#中,委托(Delegate)是一种用于封装方法的类型,它可以让我们将方法当作参数传递,也可以将方法作为返回值。在C#中,Action和Func是两种特殊的委托类型,它们分别用于表示没有返回值的函数和有返回值的函数。

本文将详细介绍如何在C#中使用Delegate、Action和Func关键字创建委托匿名方法。

1. 委托(Delegate)

委托是一种用于封装方法的类型,它可以将方法当作参数传递,也可以将方法作为返回值。委托的本质是一个类,它包含了一个方法指针(Method Pointer),这个方法指针指向了一个具体的方法。

下面是一个简单的委托示例:

public delegate void MyDelegate(string message);

这个委托名为MyDelegate,它接受一个字符串参数,并没有返回值。

2. 匿名方法

匿名方法是一种没有名称的方法,它通常用于传递给委托或事件。匿名方法可以通过lambda表达式或使用delegate关键字定义。

使用lambda表达式创建匿名方法

Lambda表达式是一种简洁的匿名方法表示方式。下面是一个使用lambda表达式创建匿名方法的示例:

public void SayHello(string message)
{
    Console.WriteLine(message);
}

public void ExecuteDelegate(MyDelegate del)
{
    del("Hello, World!");
}

public void Main()
{
    ExecuteDelegate(() => SayHello("Hello, C#!")); // 使用lambda表达式创建匿名方法
}

在这个示例中,我们定义了一个SayHello方法,一个ExecuteDelegate方法,以及一个Main方法。在Main方法中,我们使用lambda表达式创建了一个匿名方法,并将其传递给ExecuteDelegate方法。

使用delegate关键字创建匿名方法

除了使用lambda表达式,我们还可以使用delegate关键字定义匿名方法。下面是一个使用delegate关键字创建匿名方法的示例:

public delegate void MyDelegate(string message);

public void SayHello(string message)
{
    Console.WriteLine(message);
}

public void ExecuteDelegate(MyDelegate del)
{
    del("Hello, World!");
}

public void Main()
{
    MyDelegate myDel = delegate(string message)
    {
        SayHello(message);
    };

    ExecuteDelegate(myDel); // 使用delegate关键字创建匿名方法
}

在这个示例中,我们使用delegate关键字定义了一个匿名方法,并将其传递给ExecuteDelegate方法。

3. Action和Func

Action和Func是两种特殊的委托类型,它们分别用于表示没有返回值的函数和有返回值的函数。

Action

Action是一个接受一个特定类型T的参数,并且没有返回值的委托。下面是一个Action的示例:

public delegate void Action<T>(T obj);

Func<T, TResult>

Func<T, TResult>是一个接受一个特定类型T的参数,并返回一个特定类型TResult的委托。下面是一个Func<T, TResult>的示例:

public delegate TResult Func<T, TResult>(T obj);

使用Action和Func创建匿名方法

下面是一个使用Action和Func创建匿名方法的示例:

public void SayHello(string message)
{
    Console.WriteLine(message);
}

public int Add(int a, int b)
{
    return a + b;
}

public void Main()
{
    Action<string> action = SayHello; // 使用Action创建匿名方法
    action("Hello, World!");

    Func<int, int, int> func = Add; // 使用Func创建匿名方法
    int result = func(3, 4);
    Console.WriteLine("Result: " + result);
}

在这个示例中,我们使用Action和Func创建了两个匿名方法,并分别调用了SayHello和Add方法。

总结:

在C#中,委托(Delegate)是一种用于封装方法的类型,它可以将方法当作参数传递,也可以将方法作为返回值。Action和Func是两种特殊的委托类型,它们分别用于表示没有返回值的函数(Action)和有返回值的函数(Func<T, TResult>)。
Delegate、Action和Func关键字提供了一种灵活的方式来创建和使用匿名方法。通过lambda表达式和delegate关键字,你可以定义简单的或复杂的匿名方法,并根据需要使用它们。Action和Func委托类型分别用于表示没有返回值和有返回值的方法。掌握这些概念,你可以更灵活地使用C#的函数式编程特性。

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白话Learning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值