TOC

This article has been localized into Dutch by the community.

C# 3.0:

Extension Methods

Nog een fraaie feature van C# 3.0 is Extension Methods. Hiermee kun je een bestaand type uitbreiden met nieuwe functionaliteit, zonder van het oude type een sub-class te maken of dit opnieuw te compileren. Je zou bijvoorbeeld willen weten of een bepaalde string een getal was of niet. Gebruikelijk was een functie te declareren en die steeds aan te roepen, en als je dan een heleboel van die functies had, stopte je ze bij elkaar in een utility class, zoals hier:

public class MyUtils
{
    public static bool IsNumeric(string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}

Nu zou je een string kunnen checken door een regel code uit te voeren, zoals deze:

string test = "4";
if (MyUtils.IsNumeric(test))
    Console.WriteLine("Yes");
else
    Console.WriteLine("No");

Maar met Extension Methods kun je de String class uitbreiden om dit direct te ondersteunen. Dit doe je door een static class te definiëren met een paar static methods die dan jouw 'library' van extension methods zal zijn. Hier een voorbeeld:

public static class MyExtensionMethods
{
    public static bool IsNumeric(this string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}

Het enige dat dit scheidt van elke andere static method, is het "this" keyword in de parameter sectie van de method. Dit vertelt de compiler dat dit een extension method is voor de string class, en dat is eigenlijk alles wat je nodig hebt om een extension method te creëren. Nu kun je de IsNumeric() method direct bij strings oproepen, zoals hier:

string test = "4";
if (test.IsNumeric())
    Console.WriteLine("Yes");
else
    Console.WriteLine("No");

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!