C#面向对象编程-类和对象(匿名方法与lambda表达式)

匿名方法

C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定一个名称,匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部。也不能在匿名方法外部使用的ref和out参数。
注意:通过使用匿名方法,可以不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。

  1. 编写匿名方法的语法
    匿名方法是通过使用delegate关键字创建委托实例来声明的。
    编写程序,通过匿名方法实现加法和乘法运算。
using System;
//声明委托
delegate void NumberChanger(int x, int y);
namespace Project23
{
    class Program
    {
        static int num = 0;
        //定义相加的方法AddMethod
        public static void AddMethod(int a, int b)
        {
            num = a + b;
            Console.WriteLine("相加方法: {0}", num);
        }
        //定义相乘的方法MultMethod
        public static void MultMethod(int m, int n)
        {
            num = m * n;
            Console.WriteLine("相乘方法: {0}", num);
        }
        static void Main(string[] args)
        {
            // 使用匿名方法创建委托实例
            NumberChanger nc = delegate (int x, int y)
            {
                Console.WriteLine("匿名方法: x={0};y={1}", x, y);
            };
            // 使用匿名方法调用委托
            nc(10, 15);
            // 使用AddMethod方法实例化委托
            nc = new NumberChanger(AddMethod);
            // 使用匿名方法调用委托
            nc(10, 15);
            // 使用MultMethod方法实例化委托
            nc = new NumberChanger(MultMethod);
            // 使用匿名方法调用委托
            nc(10, 15);
            Console.ReadKey();
        }
    }
}

【程序分析】本例演示了匿名方法的使用。在这段代码中,首先声明一个委托NumberChanger,该委托用于返回void类型且有两个int作为参数的方法。接着在Program类中,定义一个全局变量num并初始化为0;定义AddMethod方法,用于两个整数的相加;定义MultMethod方法,用于两个整数的相乘。然后,使用匿名方法创建委托实例nc,并使用匿名方法调用委托。最后通过MultMethod方法和AddMethod方法实例化委托,计算出变量x、y的和与乘积。

匿名方法: x=10;y=15
相加方法: 25
相乘方法: 150

Lambda表达式

Lambda表达式是一种可用于创建委托类型的匿名函数。通过使用Lambda表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。Lambda表达式简化了开发中需要编写的代码量,对于编写LINQ查询表达式特别有用。

  1. 创建Lambda表达式
    若要创建Lambda表达式,需要在Lambda运算符=>左侧指定输入参数,然后在另一侧输入表达式或语句块。
    编写程序,创建Lambda表达式,计算一个整数的平方值。
using System;
namespace Project24
{
    class Program
    {
        delegate int MyDele(int i);         //声明委托
        static void Main(string[] args)
        {
            MyDele DeleLambda = x => x * x; //指定名为x的参数,并返回x的平方值
            int num = DeleLambda(4);
            Console.WriteLine(num);
            Console.ReadKey();
        }
    }
}

【程序分析】本例演示了如何创建Lambda表达式。在代码中,首先声明一个委托MyDele,该委托用于返回int类型且有一个int作为参数的方法;然后在Main方法中,创建Lambda表达式,指定名为x的参数,并返回x的平方值。

16

  1. 表达式lambda
    表达式位于=>运算符右侧的Lambda表达式称为“表达式lambda”。表达式lambda广泛用于表达式树的构造。
    仅当Lambda只有一个输入参数时,括号才是可选的;否则括号是必需的。括号内的两个或更多输入参数使用逗号加以分隔:
    编写程序,使用表达式lambda,计算两个整数的和。
using System;
namespace Project25
{
    class Program
    {
        delegate int MyDele(int x, int y);   //委托类型
        static void Main()
        {
            MyDele DeleLambda = (x, y) => x + y;
            int sum = DeleLambda(1, 1);
            Console.WriteLine(sum);
            Console.ReadKey();
        }
    }
}

【程序分析】本例演示了表达式Lambda的使用。在代码中,首先声明一个委托MyDele,该委托用于返回int类型且有两个int作为参数的方法;然后创建Lambda,计算两个整数的和。

2
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值