Ничего.
Для удобства чтения и, следовательно, в будущем для обслуживания, используйте второй. Понятно, что это намного легче понять, и из-за дизайна C # и CLR большая часть кода в вашем первом примере не требуется.
Я попытаюсь объяснить, что я имею в виду. Вам не нужно очищать или устанавливать в null любые ссылки на локальные переменные (сборщик мусора сделает это за вас). Вам нужно сделать это только для полей уровня класса, а часто даже не тогда (опять же, сборщик мусора будет собирать их, когда ваш класс выходит из области видимости).
Подумайте о том, чтобы больше сосредоточиться на концепции объектов одноразовых , и не беспокойтесь об аспектах использования памяти / сбора мусора. Очистка списка или установка ссылки на список в null на самом деле не освобождает память; память по-прежнему выделяется до тех пор, пока сборщик мусора не восстановит ее в неопределенное время в будущем.
Существуют средства для принудительного сбора мусора, но обычно это означает, что вы делаете что-то не так, если вам нужно зайти так далеко. Кто-то скажет, что если вам нужно слишком детально беспокоиться о памяти, то .NET может оказаться неправильным выбором языка для вашей проблемной области.
Кроме того, использование var
или явное указание типа не имеет никакого значения.