Ответ Марлона является технически правильным, но между каждой опцией должна быть четкая семантическая разница.
int i = 0;
Инициализация до буквального нуля имеет смысл, когда вы хотите выполнить математическую операцию над целым числом, иэта операция должна начинаться с переменной, имеющей конкретное значение ноль.Хорошим примером будет создание переменной счетчика индекса;Вы хотите начать с нуля и считать до.
int i = default(int);
Установка переменной на ее значение default
имеет смысл, когда вы, например, создаете класс с указанной переменной, где вы знаете, что переменная будетбыть установленным позже в процессе.Вот пример (каким бы непрактичным он ни был):
class IntegerClass
{
private int value;
public IntegerClass(int value)
{
this.value = value;
}
public void Reset()
{
this.value = default(int);
}
}
Опять же, они технически равны (и фактически будут компилироваться в идентичные CIL ), но каждый из них имеет свое семантическое значение.
Кроме того, использование default
может потребоваться для инициализации переменной при использовании шаблонов.
public T SomeOperation<T>()
{
T value = default(T);
this.SomeOtherOperation(ref value);
return T;
}