Различия между default (int) vs int = 0
кто-нибудь знает, существует ли какая-либо разница между объявлением целочисленной переменной, используя:
var i = default(int)
против
var i = 0;
Может быть, небольшое различие в производительности или другие отличия?
Спасибо всем!
Ответы
Ответ 1
Эффективно, нет никакой разницы. Согласно MSDN
Указывает значение по умолчанию для параметра типа. Это будет null для ссылочных типов и нуля для типов значений.
int
- тип значения, поэтому выражение будет равно 0.
Я бы выполнил явное назначение 0, так как его намного читаем.
Ответ 2
Здесь IL для кода var i = default(int)
:
IL_0001: ldc.i4.0
IL_0002: stloc.0 // i
Здесь IL для кода var i = 0;
:
IL_0001: ldc.i4.0
IL_0002: stloc.0 // i
Похоже, это сводится к личным предпочтениям.
Ответ 3
В терминах функциональности нет, нет разницы, поскольку 0
является значением по умолчанию для типа int
.
Что касается производительности, я уверен, что во время компиляции default(int)
заменяется на 0, поэтому только во время компиляции может произойти только небольшое поражение производительности, но не время выполнения.
Ответ 4
Между ними нет разницы.
В С# имеются средства для различных ситуаций. Это не подразумевает использование их во всех ситуациях, независимо от их логической причины.
Например, значение по умолчанию наиболее распространено в generics, так как в родовых классах и методах возникает одна проблема: как назначить значение по умолчанию параметризованному типу T, если вы не знаете следующее заранее.
Хотя вы можете использовать его с примитивными типами, такими как int, но вы не предлагаете этого, вся его причина существования - это что-то другое.
Используйте более поздний, поскольку он более читабельен и логичен.
Вы также можете увидеть эту ссылку по умолчанию
Ответ 5
Еще один фактор может быть в будущем, если (определение по умолчанию) в компиляторе было изменено, тогда ваш проект может сломаться.
Ответ 6
Вы должны использовать значение по умолчанию (int) для лучшей читаемости кода.
С var я = 0; вы не знаете, является ли это значением по умолчанию или жестко закодированным кодом, имеющим бизнес-смысл.