Я правильно понял, что следующий фрагмент не работает (элементы массива не изменяются) , потому что массив имеет целое число, которое является типом значений.C# using Array.ForEach Action Предикат с массивом типа значения или строки
class Program
{
public static void Main()
{
int[] ints = new int[] { 1,2 };
Array.ForEach(ints, new Action<int>(AddTen));
// ints is not modified
}
static void AddTen(int i)
{
i+=10;
}
}
То же самое применимо, если в примере используется массив строк, предположительно потому, что строка является неизменной.
вопрос у меня есть: -
Есть ли способ обойти это? Я не могу изменить подпись метода обратного вызова - например, добавив ключевое слово ref, и я не хочу обертывать тип значения классом, который будет работать ...
(Конечно, я мог бы просто напишите старомодный цикл foreach, чтобы сделать это!)
Фактически, Array.ConvertAll будет делать в этом случае (и более эффективен по мере того, как длина вычисляется правильно), но этого было бы достаточно. –
@Marc, узнайте что-то новое каждый день. Раньше этого не видел. Благодаря! – JaredPar