前言:
-. 讀作 goes to,是C#3.0的新內容;
-.?字段定義時設置{ get; set; }屬性的作用:
主要是為了外部訪問的安全性封裝字段,get set你自己可以設置限制條件,尤其是wpf綁定時,沒有get set屬性,界面是更新不了的。寫上get,set這種訪問器的叫屬性,不寫的叫字段,屬性是proprerty,字段叫field
01
—
用法場景一:定義只讀屬性
看到這樣一段代碼:
public class Man : IPerson{public string Sex => "男";public string Name { get; set; }
}public class Woman : IPerson
{public string Sex => "女";public string Name { get; set; }
}
大家可能會有疑問?為什么用=>
public string Sex => "男";
而不是這樣去賦值
public?string?Sex?{ get; set; } =?"男";
其實在這里=>的用法相當于?{ get; } = 即:將Sex字段設置為了只讀屬性,同時進行了賦值。
我們可以在控制臺中進行驗證:
去掉>?則錯誤提示就會消失。
02
—
用法場景二:Lambda表達式,匿名委托
Lambda表達式。
Lambda表達式是C#3.0的新內容,如果您之前學習的C#2.0,不認識也就不奇怪了。
給您舉個例子。
例如,我定義一個委托:
delegate int Method(int a, int b);
再定義一個方法:
int Add(int a, int b)
{
return a + b;
}
我可能需要這樣通過委托調用方法:
Method m += Add;
Console.WriteLine(m(2, 3));
====================================================
但如果用 Lambda 表達式:
Method m += (a ,b) => a + b;
Console.WriteLine(m(2, 3));
可以省去方法的定義。
實際上, Lambda 表達式只是簡化了匿名方法的語法而已。
附 C# 2.0 的匿名方法語法:
Method m += delegate(int a, int b) { return a + b; };
Console.WriteLine(m(2, 3));
*******************************************************************************
C#中 += (s, e) => 這些字符什么意思
public MainWindow()
{
InitializeComponent();
this.Loaded += (s, e) => DiscoverKinectSensor();
this.Unloaded += (s, e) => this.kinect = null;
}
在上面的代碼中,+=是在委托鏈上增加一個委托,(s,e) =>是一個lambda表達式,這個表達式創建一個委托,委托處理的主體就是=> 后面的部分。
其實這個寫法相當于
this.Loaded += new EventHandler(Form_Loaded);
private void Form_Loaded(object sender,?? EventArgs e) {
??? DiscoverKinectSensor();
}
技術群:添加小編微信并備注進群
小編微信:mm1552923 ??
公眾號:dotNet編程大全? ??