Mit C# 3.0 ist es möglich, Klassen von außen mit "Extension Methods" zu erweitern, ohne von der entsprechenden Klasse ableiten zu müssen. Dies ist von Vorteil, wenn man den ursprünglichen Datentyp (die ursprüngliche Klasse) beibehalten (Instanz i ist weiterhin vom Typ t), sealed oder Fremd-Klassen erweitern, oder unabhängig bei zukünftigen Weiterentwicklungen sein möchte... Die Erweiterungen werden im Quellcode verwendet, als gehören sie zu der jeweiligen Klasse. Im Visual Studio 2008 werden Extension Methods von IntelliSence durch den Hinweis "(extension)" gekennzeichnet.
using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace
_002_MethodExtensions
{
public static class MyStringExtension
{
public static string Reverse(this string s)
{
if (s == null || s.Length == 0)
return s;
StringBuilder sb = new StringBuilder();
for (var i = s.Length; i != 0; --i)
{
sb.Append(s[i - 1]);
}
return sb.ToString();
}
}
class Program
{
static void Main(string[] args)
{
string hello = "Hello World";
Console.WriteLine("{0} --> {1}", hello, hello.Reverse());
}
}
}