Инициализация списка параметров метода C# не работает с Clear()
Я обнаружил, что строительство
Method(out List<T>list)
{
list.Clear(); // doesn't allowed to initialyze List<T>list
list = null; // is accepted by VSTO, however, is not so good
}
Любое предложение, пожалуйста?
2 ответа
Решение
Вы не можете использовать неназначенный параметр в этом методе. Существует простое правило: используйте , если параметр не инициализирован, или используйте ref, если вы передаете инициализированный параметр методу.
Этот код будет работать правильно:
void Method<T>(ref List<T> list)
{
list.Clear();
list = null;
}
Узнайте больше о различиях в этом вопросе: в чем разница между ключевыми словами ref и out?
Если вы хотите использовать out
семантика, а не ref
Вы должны создать свой список:
Method(out List<T>list)
{
list = new List<T>();
}