為現有型別新增靜態方法,**僅限靜態類別宣告**,第一個參數前加 this:
public static int ToInt32(this string s) => Convert.ToInt32(s);
引用命名空間後,string 彷彿擁有 ToInt32() 實例方法:
string s = "1"; int i = s.ToInt32(); // 編譯執行皆可
優先序低於實例方法,無法覆寫既有成員。
宣告與初始化合併為單一陳述式:
// 物件初始化設定
var myCoOrd = new CoOrdinate { x = 0, y = 0 };
// 等同於:呼叫無參數建構函式 + 設定屬性
// 集合初始化設定
List<string> animals = new List<string> { "monkey", "donkey", "cow", "dog", "cat" };
// 取代 C# 2.0 多行 Add() 呼叫
C# 1.x 委派需宣告方法:
DemoDelegate myDelegate = new DemoDelegate(SayHi);
void SayHi() { Console.WriteLine("Hiya!!"); }
C# 2.0 匿名方法:
DemoDelegate myDelegate = delegate() { Console.WriteLine("Hiya!!"); };
C# 3.0 Lambda 進一步簡化,詳見下一節。