TOC

This article has been localized into Czech by the community.

C# 3.0:

Metody rozšíření

Další skvělou funkcí C# 3.0 jsou Metody rozšíření. Umožňují rozšířit stávající typ o novou funkcionalitu, aniž byste museli vytvářet podtřídu nebo překompilovávat starý typ. Například by vás mohlo zajímat, zda je určitý řetězec číslem nebo ne. Obvyklý přístup by byl definovat funkci a poté ji volat pokaždé, a jakmile byste měli celou řadu takovýchto funkcí, dali byste je dohromady do pomocné třídy, takto:

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

Nyní byste mohli zkontrolovat řetězec provedením řádku kódu jako tento:

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

Nicméně s metodami rozšíření můžete ve skutečnosti rozšířit třídu String tak, aby tuto funkcionalitu přímo podporovala. Uděláte to tak, že definujete statickou třídu s množinou statických metod, které budou vaší knihovnou metod rozšíření. Zde je příklad:

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

Jediné, co toto odlišuje od jakékoliv jiné statické metody, je klíčové slovo "this" v části parametrů metody. To říká kompileru, že se jedná o metodu rozšíření pro třídu string, a to je ve skutečnosti vše, co potřebujete k vytvoření metody rozšíření. Nyní můžete metodu IsNumeric() volat přímo na řetězcích, takto:

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!