Это довольно элементарный вопрос, но я никогда раньше не делился с дженериками, и я оказался в необходимости использовать его. К сожалению, у меня нет времени прямо сейчас, чтобы пройти какие-либо учебники, и ответы, которые я нашел связанным вопросам, до сих пор не являются тем, что можно назвать базовыми, так что мы идем:
Скажем, у меня есть следующее:
List<MyClass1> list1 = getListType1();
List<MyClass2> list2 = getListType2();
if (someCondition)
MyMethod(list1);
else
MyMethod(list2);
И, конечно,
void MyMethod(List<T> list){
//Do stuff
}
Ну, я думал, это будет так просто, но, видимо, это не так. VS предупреждает меня, что
Аргументы типа для метода MyMethod (System.Collections.Generic.List) не могут быть выведены из использования
и если я его скомпилирую, я получаю
Невозможно найти имя типа или пространства имен
ошибка.
В многочисленных ответах, которые я нашел, я читал, что я должен объявить, что T
есть, что имеет смысл, но я не мог понять, как это сделать в таком упрощенном сценарии. Конечно, эти ответы породили еще больше вопросов, но сейчас я просто хочу объяснить, что я делаю неправильно (кроме того, не изучая дженерики) и как сделать это правильно.