=>符号含义

=>主要有两方面的作用,一个限制属性状态,另一个简化匿名委托和Lambda


用法一:定义只读属性

cs 复制代码
public class ManPeople {     public string Sex => "男";

    public string Name { get; set; }}

public class WomanPeople {    public string Sex => "女";

    public string Name { get; set; }}

public string Sex => "男";

这里=>的用法相当于 { get; } = 即:将Sex字段设置为了只读属性,同时进行了赋值。

public string Sex { get; } = "男"


用法二:Lambda表达式,匿名委托

例如定义一个委托:

delegate int DeMethod(int a, int b);

再定义一个方法:

int Add(int a, int b)

{

return a + b;

}

我可能需要这样通过委托调用方法:

DeMethod m += Add;

Console.WriteLine(m(2, 3));


采用 C# 2.0 的匿名方法语法:

DeMethod m += delegate(int a, int b) { return a + b; };

Console.WriteLine(m(2, 3));


采用C#3.0 Lambda 表达式:

DeMethod m += (a ,b) => a + b;

Console.WriteLine(m(2, 3));

可以省去方法的定义。

实际上, Lambda 表达式只是简化了匿名方法的语法而已。


最后C#中 += (s, e) => 这些字符什么意思

cs 复制代码
public MainWindow()

{

InitializeComponent();

this.Loaded += (s, e) => InitSomeConfig();

this.Unloaded += (s, e) => this.Value= null;

}

在上面的代码中,+=是在委托链上增加一个委托,(s,e) =>是一个lambda表达式,这个表达式创建一个委托,委托处理的主体就是=> 后面的部分。

其实这个写法相当于

cs 复制代码
this.Loaded += new EventHandler(Form_Loaded);

private void Form_Loaded(object sender,   EventArgs e) {
    InitSomeConfig ();
}
相关推荐
寂寞的船9 小时前
【Unity Bug挑战】第12期 Awaitable 二次 await 死锁之谜 —— 为什么同一个异步操作等两次就卡死?
unity·c#·游戏引擎·bug
探求虚无2 天前
用 AI 在 Unity 里做一款 RTS:最难的不是生成代码,而是证明它真的能玩
人工智能·unity·游戏引擎
17岁的勇气3 天前
Unity Shader unity文档学习笔记(二十二):shader变体
笔记·学习·unity
寂寞的船4 天前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
寂寞的船6 天前
【Unity知识速递】第8期 IL2CPP 托管堆内存碎片与原生堆交互机制深度解析
unity·游戏引擎·交互
寂寞的船6 天前
【Unity知识速递】第5期 Unity 6.2 深度解析:AI Assistant 登场,World Space UI 与 Sentis 全面升级
人工智能·ui·unity
寂寞的船7 天前
【Unity知识速递】第4期 MCP for Unity:用 AI 自然语言控制编辑器
人工智能·unity·编辑器
淡海水7 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc
寂寞的船7 天前
【Unity知识速递】第6期 URP性能优化完全指南:从内存到GPU的三维调优
unity·性能优化·编辑器
寂寞的船7 天前
【Unity Bug挑战】第10期 SerializeReference 内存泄漏之谜
unity·c#·游戏引擎·bug