Для статических переменных / переменных экземпляра и элементов массива, да, это делает их подходящими по умолчанию. См. Раздел 5.2 спецификации C # 3.0:
Следующим категориям переменных автоматически присваиваются значения по умолчанию:
- Статические переменные.
- Переменные экземпляра экземпляров класса.
- Элементы массива.
Значение переменной по умолчанию зависит от типа переменной и определяется следующим образом:
- Для переменной типа значения значение по умолчанию совпадает со значением, вычисленным конструктором по умолчанию типа значения (§4.1.2).
- Для переменной ссылочного типа значением по умолчанию является ноль.
Инициализация к значениям по умолчанию обычно выполняется с помощью диспетчера памяти или сборщика мусора, которые инициализируют память до нуля с нулевыми значениями до того, как она будет выделена для использования. По этой причине удобно использовать все биты-ноль для представления нулевой ссылки.
Локальные переменные не имеют значения, так как они не могут быть использованы до того, как их определенно назначат.
Что касается того, следует ли вам явно инициализировать их или нет, это в основном вопрос личных предпочтений. Я бы не стал назначать значение в объявлении, если оно будет переназначено, например, в конструкторе.
Если честно, это не та тема, которую я могу волновать с точки зрения читабельности.