Определите AddToList
как обобщенный c метод:
static void AddToList<T>(List<T> list)
{
}
Теперь вы можете вызывать метод с аргументом типа:
List<int> list = new List<int>();
AddToList<int>(list);
Но поскольку в большинстве случаев Компилятор достаточно умен, чтобы определить тип T
, вы можете опустить аргумент типа и просто вызвать
AddToList(list);
Редактировать: Ответы на следующие вопросы:
Для перебора списка используйте T
в качестве типа, как если бы вы использовали не-обобщенные c типы.
static void List_ShowInfo<T>(List<T> list)
{
foreach (T item in list) // list is List<T>, so all items are of type T
{
// Do something with item
}
}
В вашем примере:
static void List_AddToList<T>(List<T> list, StreamReader file)
{
string s;
while ((s = file.ReadLine()) != null)
{
list.Add(new List<T>(s)); <---------------
}
}
Вы неправильно строите свой список: 1. Вы здесь используется string
, но list принимает int
: взгляните на конструкторы 2. Если вы хотите добавить строки в список, вы, вероятно, захотите использовать List<string>
вместо List<T>
.
Также обратите внимание на раздел Genercis в C# Руководство по программированию