=>符号含义

=>主要有两方面的作用,一个限制属性状态,另一个简化匿名委托和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 ();
}
相关推荐
大飞pkz7 分钟前
【Unity】如何解决UI中的Button无法绑定带参数方法的问题
ui·unity·游戏引擎·游戏开发·开发记录·button绑定
大飞pkz1 小时前
【Unity】使用LitJson保存和读取数据的例子
unity·游戏引擎·游戏开发·数据保存和读取·游戏中的数据处理·类似jsonunility
半瓶啤酒一醉方休3 小时前
unity bug
unity·游戏引擎·bug
仙魁XAN8 小时前
Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理
flutter·unity·华为手机·textfield·键盘唤不起
米芝鱼10 小时前
Unity URPShader:实现和PS一样的色相/饱和度调整参数效果(修复)
游戏·unity·游戏引擎·图形渲染·opengl·着色器
scott.cgi13 小时前
「Unity3D」TextMeshPro使用TMP_InputField实现,输入框高度自动扩展与收缩
unity·ugui·textmeshpro·tmp_inputfield·inputfield高度自动化·unity输入框高度扩展·textmeshpro高度扩展
大飞pkz1 天前
【Unity】MVC的简单分享以及一个在UI中使用的例子
unity·c#·mvc·框架·ui框架·商业级ui框架
Tatalaluola1 天前
unity在编辑器模式调试音频卡顿电流声
unity·游戏引擎
DanmF--1 天前
详解UnityWebRequest类
网络·unity·c#·游戏引擎·游戏程序
大模型铲屎官1 天前
Unity C# 与 Shader 交互入门:脚本动态控制材质与视觉效果 (含 MaterialPropertyBlock 详解)(Day 38)
c语言·unity·c#·交互·游戏开发·材质·shader