TOC

This article has been localized into Portuguese by the community.

C# 3.0:

Métodos de extensão

Outro recurso interessante do C # 3.0 é o método de extensão. Eles permitem que você estenda um tipo existente com uma nova funcionalidade, sem precisar subclassificar ou recompilar o tipo antigo. Por exemplo, você pode querer saber se uma determinada string era um número ou não. A abordagem usual seria definir uma função e, em seguida, chamá-la toda vez, e depois de obter um monte desse tipo de funções, você as colocaria juntas em uma classe de utilitário, assim:

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

Agora você pode verificar uma string executando uma linha de código como esta:

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

No entanto, com Métodos de Extensão, você pode realmente estender a classe String para suportar isso diretamente. Você faz isso definindo uma classe estática, com um conjunto de métodos estáticos que serão sua biblioteca de métodos de extensão. Aqui está um exemplo:

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

A única coisa que separa isso de qualquer outro método estático, é a palavra-chave "this" na seção de parâmetro do método. Ele diz ao compilador que este é um método de extensão para a classe string, e isso é tudo que você precisa para criar um método de extensão. Agora, você pode chamar o método IsNumeric() diretamente em strings, assim:

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!