Передача элементов массива в функцию как отдельных аргументов. C#
Как передать элементы массива в функцию в качестве отдельных аргументов?
Можно сделать так:
f(arr[0], arr[1], arr[2])
Но это не всегда удобно.
На Python можно было делать так:
f(*arr)
как делать на C# почему-то не могу найти.
Ответы (1 шт):
Мне же нужно наоборот массив передать как несколько аргументов. Например передать массив из 2х элементов в
Random.Next()
Как в питоне конечго же не получится, но способ можно написать самому
private readonly Random rnd = Random.Shared;
public int RandomRange(int[] array, int offset = 0)
{
return rnd.Next(array[offset], array[offset + 1]);
}
int[] array = new[] { 0, 10, 20, 45 };
int number = RandomRange(array, 1); // [10..20)
Или так
public int RandomRange(int[] array)
{
return rnd.Next(array[0], array[1]);
}
int number = RandomRange(array[1..2]); // [10..20)
Первый способ оптимальнее, второй спавнит новый массив из 2 элементов, поэтому если надо очень много генерировать, то лучше первый.
Есть вариант еще со спанами, выглядит как второй, работает как первый, но я его для сохранения простоты ответа оставлю за рамками. Про вариант с небезопасным кодом вообще промолчу, он кстати похож на питоновский был бы.