2014-09-11 3 views
16

кто-нибудь знает, если существует никакой разницы между объявить целочисленную переменную с помощью:Различия между умолчанию (ИНТ) против междунар = 0

var i = default(int) 

против

var i = 0; 

Может быть небольшая разница в производительности или другие отличия?

Спасибо всем!

+2

Разумеется, нет никаких отличий. Напишите читаемый код, уверен, что подавляющее большинство программистов предпочитают использование явного 0. –

ответ

17

Фактически, нет никакой разницы. Согласно MSDN

Задает значение по умолчанию параметра типа. Это будет нулевое значение для ссылочных типов и ноль для типов значений.

int является типом значения, поэтому выражение будет решать 0.

Я бы выполнить явное 0 назначение, как его намного более читаемым.

+0

Спасибо другу за ответ –

1

С точки зрения функциональности нет, нет разницы, так как 0 является значением по умолчанию для типа int.

С точки зрения производительности, я уверен, что default(int) заменяется на 0 во время компиляции, поэтому только во время компиляции может произойти только небольшое поражение производительности, но не время выполнения.

0

Другим фактором может быть будущее, если (определение по умолчанию) было изменено в компиляторе, тогда ваш проект может сломаться.

+0

Я не думаю, что значение по умолчанию, которое будет изменено, будет меняться. – Mephy

+0

Вы определенно правы. Тем не менее, вы идете с предположением, таким образом я. Научного обсуждения нет.Я помню, что значение по умолчанию для языка C раньше было чем-то другим - 32767?! – codebased

1

Разница между ними не существует.
В C# имеются средства для различных ситуаций. Это не подразумевает использование их во всех ситуациях, независимо от их логической причины.
Например, по умолчанию наиболее распространено в generics, так как в общих классах и методах возникает одна проблема: как назначить значение по умолчанию параметризованному типу T, если вы заранее не знаете следующее.
Хотя вы можете использовать его с примитивными типами, такими как int, но вы не предлагаете этого, вся его причина существования - это нечто иное.
Используйте более поздний, поскольку он более читабельен и логичен.
Вы также можете увидеть this link on default

22

Вот IL для var i = default(int) кода:

IL_0001: ldc.i4.0  
IL_0002: stloc.0  // i 

Вот ПЯ для var i = 0; кода:

IL_0001: ldc.i4.0  
IL_0002: stloc.0  // i 

кажется, что это сводится к личным предпочтение.

+1

Также 'var i = new int()' тот же. –

Смежные вопросы