C#12 也出現一陣子了,這陣子來整理整理一些新功能的介紹
primary constructors
這玩意被稱為「主要建構式」,大概有幾個特點:
- 這功能讓型別宣告和建構式的宣告混成一行
- 類別與結構都可以用
- 當你在類別上這麼做的時候表示已經有建構式,所以編譯器不會幫你自動產生無參數建構式
來個簡單的例子:
public class Person(string name, int age, string memo)
{
public string Name { get; } = name;
public int Age { get; } = age;
public string Memo { get; } = memo;
}
第一行的 public class Person(string name, int age, string memo) 同時宣告一個 class Person 以及它的建構式 Person(string name, int age, string memo)。
展開來後大致長得像這樣:
public class Person
{
public Person(string name, int age, string memo)
{
Name = name;
Age = age;
Memo = memo;
}
public string Name { get; }
public int Age { get; }
public string Memo { get; }
}
可以少打很多字,還不錯。
default lambda parameters
C# 10 在 Lambda 語法上做了一些增強,可以參考之前的文章 C# 10 新功能 -- Lambda ,以之前的基礎又加上新的 default lambda parameters 特性,名字取得很炫,其實就是選擇性參數的意思。這有一個前提,就是參數必須是顯式指派型別才可以使用這功能,使用起來很簡單,相信你看了以下的範例就懂了:
var addBy = (int value1, int value2 = 1) => value1 + value2;
Console.WriteLine(addBy(10, 5)); // 輸出 15
Console.WriteLine(addBy(20)); // 輸出 21
先介紹這兩個新功能當作開場,後續再來聊其他的。