Extension Methods (C# 3.0)
Extension methods allow an existing type to be extended with new
methods, without altering the definition of the original type. An extension method is a
static method of a static class, where the this
modifier
is applied to the first parameter. The type of the first parameter will be the type that is
extended. For example:
public static class StringHelper { public static bool IsCapitalized (this string s) { if (string.IsNullOrEmpty (s)) return false; return char.IsUpper (s[0]); } }
The IsCapitalized
extension method can be called as
though it were an instance method on a string, as follows:
Console.Write ("Perth".IsCapitalized());
An extension method call, when compiled, is translated back into an ordinary static method call:
Console.Write (StringHelper.IsCapitalized ("Perth"));
Interfaces can be extended, too:
public static T First<T> (this IEnumerable<T>
sequence)
{
foreach (T element in sequence)
return element;
throw new InvalidOperationException ("No elements!");
}
...
Console.WriteLine ("Seattle".First()); // S
Extension Method Chaining
Extension methods, like instance methods, provide a tidy way to chain functions. Consider the following two functions:
public static class StringHelper { public static string Pluralize (this string s) {...} public static string Capitalize (this string s) {...} }
x
and y
are
equivalent and both evaluate to "Sausages"
, but
x
uses extension methods, whereas y uses static methods:
string x = "sausage".Pluralize( ).Capitalize( ...
Get C# 3.0 Pocket Reference, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.