Я працював над Java та новою технологією .Net
Чи можна оголосити функцію в C #, яка приймає змінні вхідні параметри
Чи існує якийсь синтаксис C #, подібний до наступного синтаксису Java?
void f1(String... a)
Я працював над Java та новою технологією .Net
Чи можна оголосити функцію в C #, яка приймає змінні вхідні параметри
Чи існує якийсь синтаксис C #, подібний до наступного синтаксису Java?
void f1(String... a)
Відповіді:
Так, C # має еквівалент параметрів varargs. Вони називаються масивами параметрів і вводяться з paramsмодифікатором:
public void Foo(int x, params string[] values)
Потім зателефонуйте йому за допомогою:
Foo(10, "hello", "there");
Як і в Java, це лише останній параметр, який може змінюватися таким чином. Зауважте, що (як і у Java) параметр params object[] objectsможе легко спричинити плутанину, оскільки потрібно пам’ятати, призначений для того, щоб одиничний аргумент типу object[]був обгорнутий знову чи ні. Подібним чином для будь-якого типу, що має дозвіл, потрібно пам’ятати, чи буде один аргумент аргументуватися nullяк посилання на масив або як один елемент масиву. (Я думаю, що компілятор створює масив лише в тому випадку, якщо це потрібно, але я схильний писати код, який уникає того, щоб я про це пам'ятав.)
Подивіться на параметри (C # Reference)
Ключове слово params дозволяє вказати параметр методу, який приймає змінну кількість аргументів.
Ви можете надіслати розділений комами список аргументів типу, зазначеного в декларації параметра, або масив аргументів зазначеного типу. Ви також не можете надсилати аргументів.
Жодні додаткові параметри не дозволяються після ключового слова params у декларації методу, а в оголошенні методу дозволено лише одне ключове слово params.
Як показано в прикладі, метод оголошений як
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
і використовується як
UseParams(1, 2, 3, 4);