Я пытаюсь сделать что-то на С#, что я легко делаю на Java. Но с некоторыми неприятностями. У меня есть неопределенное количество массивов объектов типа T. A реализует интерфейс I. Мне нужен массив I в конце, который представляет собой сумму всех значений из всех массивов. Предположим, что никакие массивы не будут содержать одинаковые значения.
Этот Java-код работает.
ArrayList<I> list = new ArrayList<I>();
for (Iterator<T[]> iterator = arrays.iterator(); iterator.hasNext();) {
T[] arrayOfA = iterator.next();
//Works like a charm
list.addAll(Arrays.asList(arrayOfA));
}
return list.toArray(new T[list.size()]);
Однако этот код С# не делает:
List<I> list = new List<I>();
foreach (T[] arrayOfA in arrays)
{
//Problem with this
list.AddRange(new List<T>(arrayOfA));
//Also doesn't work
list.AddRange(new List<I>(arrayOfA));
}
return list.ToArray();
Итак, очевидно, что мне нужно каким-то образом преобразовать массив T[]
в IEnumerable<I>
, чтобы добавить его в список, но я не уверен, как лучше всего это сделать? Какие-либо предложения?
РЕДАКТИРОВАТЬ: Разработка в VS 2008, но необходимо скомпилировать для .NET 2.0.