This article has been localized into Czech by the community.
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");