系統整理 C# 3.0 兩大基石特性——var 隱式型別區域變數與擴充方法的語法規則、編譯行為、IL 驗證、命名空間導入策略與完整實戰範例。
var i = 0; // int32
var b = true; // bool
var s = "Henllyee"; // string
IL 區域變數簽名:.locals init ([0] int32 i, [1] bool b, [2] string s) —— 編譯期確定具體型別。
var list = new List<int> { 1, 2, 4, 100 };
foreach (var item in list) { Console.Write(item + ", "); }
this 修飾
public static string DisplayDefiningAssembly(this object obj)
{
return $"{obj.GetType().Name} lives here:\n\t{Assembly.GetAssembly(obj.GetType())}";
}
DataSet ds = new DataSet();
Console.Write(ds.DisplayDefiningAssembly()); // 實例方法語法
// 或
ObjectExtensions.DisplayDefiningAssembly(ds); // 靜態方法語法
關鍵原則: 擴充方法僅在 using 其所在命名空間時可見。
System),實現「零導入可見」MyApp.Extensions),按需 using
// HenllyeeExtensions.cs
namespace System // 置於 System 命名空間,string/int 等自動可見
{
public static class HenllyeeExtensions
{
public static void Foo(this int i, string msg)
{
Console.WriteLine($"{i} called Foo() say '{msg}'");
}
}
}
// 使用端(無需額外 using)
int i = 0;
i.Foo("Hello, Henllyee!"); // 直接可見
using 命名空間擴充方法using 命名空間擴充方法