Инициализация списка параметров метода 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>();
}
Другие вопросы по тегам