导读:本期聚焦于小伙伴创作的《C#中=>符号有哪两种用法?Lambda表达式与表达式体成员怎么用》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#中=>符号有哪两种用法?Lambda表达式与表达式体成员怎么用》有用,将其分享出去将是对创作者最好的鼓励。

在C#的语法体系中,=>符号被称为Lambda运算符,它主要承担两种完全不同的功能,分别是用于创建Lambda表达式,以及定义各类表达式体成员,这两种用法覆盖了日常开发中的很多常见场景。

C#中=>符号有哪两种用法?Lambda表达式与表达式体成员怎么用

=>符号的第一种用法:Lambda表达式

Lambda表达式是C#引入的一种匿名函数写法,它使用=>符号来分隔参数列表和表达式主体,相比传统的匿名方法写法更加简洁,常用于委托、LINQ查询等场景。

Lambda表达式的基本语法

Lambda表达式的通用语法格式为:(参数列表) => 表达式主体,当参数只有一个时,括号可以省略。如果表达式主体包含多条语句,需要使用大括号包裹,并且添加return语句返回结果。

Lambda表达式使用示例

下面通过几个常见的场景展示Lambda表达式的用法:

// 1. 无参数的Lambda表达式
Func<string> getGreeting = () => "Hello World";
Console.WriteLine(getGreeting()); // 输出 Hello World

// 2. 单个参数的Lambda表达式,省略括号
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // 输出 25

// 3. 多个参数的Lambda表达式
Func<int, int, int> add = (a, b) => a + b;
Console.WriteLine(add(3, 4)); // 输出 7

// 4. 表达式主体包含多条语句的Lambda表达式
Func<int, int> calculate = x => 
{
    int result = x * 2;
    result += 10;
    return result;
};
Console.WriteLine(calculate(5)); // 输出 20

// 5. 在LINQ查询中使用Lambda表达式
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
// evenNumbers结果为 [2,4]

=>符号的第二种用法:表达式体成员

表达式体成员是C# 6.0及后续版本引入的语法特性,允许使用=>符号来定义类或结构体的成员,替代传统的语句体定义方式,让成员的代码更加简洁。

表达式体成员的适用场景

表达式体成员可以用于定义方法、属性、构造函数、终结器、索引器等各类成员,只要成员的逻辑可以用单个表达式表示,就可以使用这种写法。

表达式体成员使用示例

以下是不同成员使用表达式体定义的示例:

public class Student
{
    // 1. 表达式体方法
    public string Name { get; set; }
    public int Age { get; set; }
    
    // 传统方法定义
    // public string GetInfo()
    // {
    //     return $"姓名:{Name},年龄:{Age}";
    // }
    // 表达式体方法定义
    public string GetInfo() => $"姓名:{Name},年龄:{Age}";
    
    // 2. 表达式体属性
    // 传统属性定义
    // public bool IsAdult 
    // {
    //     get { return Age >= 18; }
    // }
    // 表达式体属性定义
    public bool IsAdult => Age >= 18;
    
    // 3. 表达式体构造函数
    // 传统构造函数定义
    // public Student(string name, int age)
    // {
    //     Name = name;
    //     Age = age;
    // }
    // 表达式体构造函数定义
    public Student(string name, int age) => (Name, Age) = (name, age);
    
    // 4. 表达式体索引器
    private string[] scores = new string[3];
    // 传统索引器定义
    // public string this[int index]
    // {
    //     get { return scores[index]; }
    //     set { scores[index] = value; }
    // }
    // 表达式体索引器定义
    public string this[int index]
    {
        get => scores[index];
        set => scores[index] = value;
    }
}

// 使用测试
var student = new Student("张三", 20);
Console.WriteLine(student.GetInfo()); // 输出 姓名:张三,年龄:20
Console.WriteLine(student.IsAdult); // 输出 True
student[0] = "90";
Console.WriteLine(student[0]); // 输出 90

两种用法的核心区别

虽然两种用法都使用=>符号,但核心逻辑有明显差异:

  • Lambda表达式本质是匿名函数,用于快速定义一段可执行的代码逻辑,通常赋值给委托类型的变量,或者作为方法参数传递。
  • 表达式体成员是类/结构体成员的一种简化定义方式,属于成员声明的语法糖,最终编译后会生成和传统语句体成员完全一致的IL代码。
对比维度Lambda表达式表达式体成员
本质匿名函数实例成员声明的简化语法
使用场景委托赋值、LINQ查询、事件处理等类/结构体的方法、属性、构造函数等成员定义
左侧内容参数列表(可省略单参数的括号)成员的名称和参数(如方法名、属性名)

使用注意事项

在实际开发中用=>符号时,需要注意以下几点:

  • Lambda表达式如果参数类型无法被编译器推断,需要显式声明参数类型,例如(int x, int y) => x + y
  • 表达式体成员只能包含单个表达式,如果成员逻辑需要多条语句实现,还是要使用传统的语句体定义方式。
  • 不要将=>符号和大于等于运算符>=混淆,两者的语法位置和作用完全不同,编译器会根据上下文自动区分。

C#Lambda表达式表达式体成员=&gt;符号修改时间:2026-07-08 16:39:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。