C#对Lambda表达式的理解以及用Lambda表达式定义委托

关于C#对Lambda表达式的面试问题

  1. 什么是Lambda表达式?
    Lambda表达式是C#中的一种匿名函数,它可以作为一种简单、紧凑的语法形式,用于声明和定义一段代码逻辑。它可以快速、方便地创建一个委托类型的实例,通常用于简化回调函数、LINQ查询、事件处理等操作。

  2. Lambda表达式有什么好处?在哪些场景下使用Lambda表达式比较适合?
    Lambda表达式的好处在于可以使代码更加简洁、易于理解和维护。通常在需要定义一个短小、简单、只使用一次的方法时,使用Lambda表达式比定义一个具名方法更加合适。比如,在LINQ查询中,使用Lambda表达式可以使代码更加简洁明了。

  3. Lambda表达式和匿名方法有什么区别?
    Lambda表达式和匿名方法都是C#中的匿名函数。它们的区别在于Lambda表达式比匿名方法更加简洁、可读性更好,支持的语法更加丰富,同时Lambda表达式中的变量捕获方式和作用域也与匿名方法不同。

  4. 在C#中,Lambda表达式的语法是什么?如何使用Lambda表达式定义一个方法?
    Lambda表达式的语法形式为(input-parameters) => expression,其中(input-parameters)表示输入参数列表,expression表示Lambda表达式的返回值。可以通过如下方式使用Lambda表达式定义一个方法:

Func<int, int> square = x => x * x;

上面的代码定义了一个Func类型的变量square,该变量存储了一个输入参数为整数,返回值也为整数的Lambda表达式。
Func的第一个参数为输入参数类型,第二个参数为返回值的类型。
如果定义不需要输入参数可以这样定义:

Func<int> square = x => 10;
  1. 在C#中,Lambda表达式可以用在哪些地方?举例说明。
    Lambda表达式可以用在很多地方,比如:
    委托类型的变量赋值,例如:Func<int, bool> filter = x => x > 10;
    LINQ查询中的查询条件、排序、分组等操作,例如:var filteredList = myList.Where(x => x > 5).OrderByDescending(x => x).ToList();
    事件处理程序,例如:myButton.Click += (sender, e) => { Console.WriteLine(“Button clicked!”); };
  2. 什么是LINQ?为什么使用LINQ和Lambda表达式可以提高代码的可读性和可维护性?
    LINQ是一种语言集成查询,它可以用来查询和操作.NET对象、集合、数组、数据库、XML文档等数据源。使用LINQ和Lambda表达式可以使代码更加简洁、易于理解和维护,同时也能提高代码的可读性和可维护性。这是因为LINQ提供了一种类似于SQL的语法,而Lambda表达式

Lambda表达式定义各种委托方法,方便简洁

  1. 下面用lambda表达式定义了一个输入值类型和返回值类型都为int的委托方法(注:Func<int, int>第一个int为输入类型,第二个interesting为返回类型)
Func<int, int> square = x => x * x;
//调用
square(2);//返回4
  1. 下面用lambda表达式定义了没有输入值,返回值类型为int的委托方法
Func<int> myFunc = () => 42;
//调用
myFunc(); // 输出 "42"
  1. 下面用lambda表达式定义了没有返回值,输入值类型为int的委托方法
//Action<int> myAction = (int x) => { Console.WriteLine($"Hello, {x}!"); };
Action<int> square = x => Console.WriteLine(x * x);
//调用
square(5); // 输出 "25"
  1. 下面用lambda表达式定义了没有输出值,没有返回值的委托方法
Action myAction = () => {
    
     Console.WriteLine("Hello, world!"); };

//调用
myAction();

猜你喜欢

转载自blog.csdn.net/weixin_44442366/article/details/130217587