;

sexta-feira, 11 de fevereiro de 2011

Passagem de parâmetros por params


No post anterior abordei a passagem de parâmetros por referência. Hoje vou falar dos parâmetros params. Um parâmetro do tipo params permite que passe uma quantidade variável de parâmetros na chamado do método. É diferente de ter um método que recebe um array como parâmetro. Neste caso, ao chamar o método você terá que passar um array, e no caso do params, ao chamar o método, você passará quantos valores forem necessários, separados por vírgula. Veja a diferença.

Passagem de parâmetros usando um array:

        int[] myarray = new int[3] { 10, 11, 12 };
        ChamaMetodoArray(myarray);

Passagem de parâmetros usando params:

  ChamaMetodoParams(10,11,12);

Usando params,  a chamado do método é relativamente mais simples. Mas é importante ressaltar que o parâmetro params é o último argumento do método. Abaixo temos um exemplo, extraído da documentação do MSDN, para facilitar o entendimento.

    public static void UseParams(params int[] list)
    {
        for (int i = 0; i < list.Length; i++)
            Console.WriteLine(list[i]);
        Console.WriteLine();
    }

    public static void UseParams2(params object[] list)
    {
        for (int i = 0; i < list.Length; i++)
            Console.WriteLine(list[i]);
        Console.WriteLine();
    }

    public static void Main()
    {
        UseParams(1, 2, 3);
        UseParams2(1, 'a', "test");

        int[] myarray = new int[3] { 10, 11, 12 };
        UseParams(myarray);

        UseParams2();

        Console.ReadLine();
    }

Repare que ao chamar o método com argumentos do tipo params pode-se passar uma lista de parâmetros separados por virgula (UseParams(1, 2, 3);) ou um array (UseParams(myarray);).  O parâmetro params também aceita que não passe argumento algum (UseParams2();).

0 comentários:

Postar um comentário