C# =>实用详解(20221111)
=>主要有两方面的作用,一个限制属性状态,另一个简化匿名委托和Lambda
用法一:定义只读属性
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 表达式只是简化了匿名方法的语法而已。
用法3lambda表达式 C#中 += (s, e) => 这些字符什么意思
public MainWindow()
{
InitializeComponent();
this.Loaded += (s, e) => InitSomeConfig();
this.Unloaded += (s, e) => this.Value= null;
}
在上面的代码中,+=是在委托链上增加一个委托,(s,e) =>是一个lambda表达式,这个表达式创建一个委托,委托处理的主体就是=> 后面的部分。
其实这个写法相当于
this.Loaded += new EventHandler(Form_Loaded);
private void Form_Loaded(object sender, EventArgs e)
{
InitSomeConfig ();
}
lambda表达式,表示一个匿名函数,=>前面的是参数,后面的是函数体。你可以把它当作一个函数。