在靜態類別中定義靜態方法,第一個參數加 this 修飾符,即可「擴充」既有型別(含介面)的方法。呼叫時如同實例方法,IntelliSense 會顯示 (extension) 標記。
public static class Extensions
{
public static string GetString(this IDataReader dr, string name)
{
return dr.GetString(dr.GetOrdinal(name));
}
public static int GetInt32(this IDataReader dr, string name)
{
return dr.GetInt32(dr.GetOrdinal(name));
}
}

Object → 所有型別皆可用(需引用命名空間)。public static bool IsIn(this object o, IEnumerable collection)
{
foreach (object item in collection)
if (item.Equals(o)) return true;
return false;
}
public static bool IsEmailAddress(this string text)
{
return new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$").IsMatch(text);
}

LINQ to Objects / SQL / XML 皆建構於擴充方法之上,提供豐富的查詢運算子。