Предположим, что я написал свой собственный метод для изменения списка на месте.
public static void MyReverse<T>(List<T> source)
{
var length = source.Count;
var hLength = length / 2;
for (var i = 0; i < hLength; i++)
{
T temp = source[i];
source[i] = source[length - 1 - i];
source[length - 1 - i] = temp;
}
}
Я называю это так, и он работает.
var fooList = new List<Foo>();
MyReverse(fooList);
Если я хочу отменить несколько списков, я называю это так.
var fooList = new List<Foo>();
var barList = new List<Bar>();
var bazList = new List<Baz>();
MyReverse(fooList);
MyReverse(barList);
MyReverse(bazList);
Если я хочу изменить произвольное количество списков, попробую:
public static void Main(string[] args)
{
var lists = new List<object>
{
new List<Foo>(),
new List<Bar>(),
new List<Bar>()
};
ReverseLists(lists);
}
public static void ReverseLists(List<object> sourceLists)
{
foreach (var sourceList in sourceLists)
{
MyReverse(sourceList); // Error: Type arguments cannot be inferred from usage
}
}
Но это порождает ошибку времени компиляции. Это то, что я пытаюсь сделать возможным - может ли быть реализован метод ReverseLists
?