Genişletme yöntemleri, asıl tipi değiştirmeden, kalıtımla yeni bir tip oluşturmadan ve ayrıca derlemeye gerek kalmadan var olan tiplere yeni yöntemler eklemenizi sağlar. Örneğin 
Stringtipine KelimeSayisi veya KarakterSayisi gibi bir karakterin String içinde kaç tane bulunduğunu döndüren bir yöntem ekleyebilirsiniz. Tipin orijinal yöntemleri ile genişletme yöntemlerini çağırmak arasında bir fark yoktur.
using System;
namespace GenisletmeYontemleri
{
    public static class GenisletmeYontemlerim
    {
        public static int KarakterSayisi(this String str, Char c)
        {
            if (str == String.Empty) return 0;
            return str.Split(new Char[] { c }).Length - 1;
        }
        public static int KelimeSayisi(this String str)
        {
            return str.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            String m = "Kara kara kartallar, karlı iyi tarlalar ararlar";
            Char aranan = 'a';
			
            Console.Write("'{0}' harfi sayısı : ", aranan);
            Console.WriteLine(m.KarakterSayisi(aranan));
			
            Console.Write("Kelime sayısı : ");
            Console.WriteLine(m.KelimeSayisi());
			
            Console.ReadKey();
			
        }
    }
}
Kodun çıktısı şöyle olacaktır:
'a' harfi sayısı : 14
Kelime sayısı : 7
Örnekte görüldüğü gibi GenisletmeYontemlerim isimli bir statik sınıf içinde tanımlanan iki statik yöntemin ilk parametreleri normal 
String str  şeklinde bir tanımlama yerine 
this String str şeklinde tanımlanmıştır. Buradaki 
this ifadesi ile ifadenin yanındaki parametrenin tipine (örneğimizde 
String tipine), geçerli yöntemi sınıfın / tipin kendi metodları gibi kullanılacak yeni bir yöntem olarak ekler.
Burada String tipine eklenen eklenen "
KarakterSayisi" ve "
KelimeSayisi" yöntemlerinin ana program içindeki kullanımlarına bakıldığında String türündeki "
m" isimli değişkende aynen 
String'in diğer metodları (örneğin 
IndexOf, 
EndsWith) gibi kullanıldığı görülür. Ayrıca bir başka dikkat çeken konu ise yönteme gönderilen parametre sayısıdır. Genişletme yöntemlerinde 1. parametre olarak genişletilen tipin kendisi kullanıldığından, 
KarakterSayisiyöntemi 2, KelimeSayisi yöntemi 1 parametre ile tanımlanmasına rağmen 
KarakterSayisi yöntemi sadece 2. parametre kullanılarak, KelimeSayisi ise hiç parametre kullanılmadan çağrılmıştır.
Genişletme Yöntemleri, Visual Studio içinde aynen diğer yöntem ve özelliklerde olduğu gibi IntelliSense listesinde (çoğunlukla bir sınıf örneği adı yazıldıktan sonra . karakterine basılırsa görülen özellik ve yöntemler listesi) de görülür.
.NET Framework Sınıf Kütüphanesinde de genişletme yöntemleri bulunur. Örneğin, özellikle LINQ sorgularında işe yarayan 
IEnumerable arayüzünün aslında sadece 1 tane (
GetEnumerator) yöntemi bulunduğu halde IntelliSense listesinde bir çok yöntemi olduğunu görürsünüz. Bu yöntemler 
System.Linq isim alanında tanımlanmış olan 
IEnumerableve 
IEnumerable<T> arayüzlerinin genişletme yöntemleridir.
Son olarak şunu ekleyelim. Genişletme yöntemleri jenerik olmayan (generics) statik bir sınıf oluşturulup bu sınıfın içinde tanımlanmalıdır.