Ali Majed HA Ответов: 2

Как распаковать arraylist в C#?


У меня есть 2 метода, один для вставки данных, а другой для обновления. Эти 2 метода имеют все общие аргументы, за исключением того, что метод "update" имеет дополнительный аргумент:

if ()
    insert_data(arg1, arg2, arg3, arg4);
else
    update_data(ID, arg1, arg2, arg3 arg4);


Я не хочу повторять "arg1` до" arg4`, поэтому я определил `ArrayList`:

var dataArrayList = new ArrayList()
{
    arg1,
    arg2,
    arg3,
    arg4
}


Есть ли вообще что-то, что может распаковать элементы этого "ArrayList", как символ " * ` в Python?

if ()
    insert_data(*dataArrayList);
else
    update_data(ID, *dataArrayList);


Что я уже пробовал:

Я искал через веб-вопросы, но в качестве решений я должен изменить свои определения методов. Я не хочу менять определения методов.

2 Ответов

Рейтинг:
13

Chris Copeland

К сожалению, нет простого способа сделать это без погружения в размышления. Я бы рекомендовал либо получить доступ к ArrayList непосредственно для доступа к каждому из значений, или лучшей альтернативой может быть просто создание промежуточного класса, содержащего все значения?

public class Data {
  public string Value1 { get; set; }
  public string Value2 { get; set; }
  public int Value3 { get; set; }
}

Затем вы можете передать экземпляр этого объекта в методы и получить доступ ко всем соответствующим полям:
var data = new Data
{
  Value1 = ..,
  Value2 = ..
};

if (..)
  insert_data(data);
else
  update_data(ID, data);


Ali Majed HA

Хотя я должен изменить определение метода, это, кажется, лучший способ. Спасибо.

Рейтинг:
0