Tenho trabalhado em Java e novo na tecnologia .Net
É possível declarar uma função em C # que aceita parâmetros de entrada variáveis
Existe alguma sintaxe C # semelhante à seguinte sintaxe Java?
void f1(String... a)
Tenho trabalhado em Java e novo na tecnologia .Net
É possível declarar uma função em C # que aceita parâmetros de entrada variáveis
Existe alguma sintaxe C # semelhante à seguinte sintaxe Java?
void f1(String... a)
Respostas:
Sim, C # tem um equivalente aos parâmetros varargs. Eles são chamados de matrizes de parâmetros e introduzidos com o paramsmodificador:
public void Foo(int x, params string[] values)
Em seguida, chame-o com:
Foo(10, "hello", "there");
Assim como com Java, é apenas o último parâmetro que pode variar assim. Observe que (como com Java) um parâmetro de params object[] objectspode facilmente causar confusão, pois você precisa se lembrar se um único argumento do tipo object[]deve ser encapsulado novamente ou não. Da mesma forma, para qualquer tipo anulável, você precisa se lembrar se um único argumento de nullserá tratado como uma referência de matriz ou um único elemento de matriz. (Acho que o compilador só cria o array se for necessário, mas tendo a escrever código que evita ter que me lembrar disso.)
Dê uma olhada nos parâmetros (referência C #)
A palavra-chave params permite que você especifique um parâmetro de método que leva um número variável de argumentos.
Você pode enviar uma lista de argumentos separados por vírgulas do tipo especificado na declaração do parâmetro ou uma matriz de argumentos do tipo especificado. Você também pode enviar nenhum argumento.
Nenhum parâmetro adicional é permitido após a palavra-chave params em uma declaração de método, e apenas uma palavra-chave params é permitida em uma declaração de método.
Conforme mostrado no exemplo, o método é declarado como
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
e usado como
UseParams(1, 2, 3, 4);