Есть ли где-нибудь константа с нулем [0] в каком-либо классе Microsoft .NET? - PullRequest
6 голосов
/ 25 апреля 2011

Мне просто любопытно, и я знаю, что это не имеет особой ценности, но здесь это идет ...

Я думаю, что где-то видел что-то подобное, но я не уверен.

Я имею в виду что-то вроде этого:

var zero = Class.Zero;

Я пытался посмотреть на класс Math, но его там нет.

Я также знаю, что могу использовать тип значения без знака, например ushort.Min, чтобы получить значение Zero (0); это не то, что я здесь спрашиваю ...: D

Ответы [ 4 ]

11 голосов
/ 25 апреля 2011

Вы имеете в виду default(T)?

int zero = default(int);

Это представляет значение по умолчанию для данного типа, для int это 0. Вы не должны использовать это, если вы уже знаете , хотя вам нужен ноль, только в В случае, если у вас есть тип во время выполнения, для которого вам нужно значение по умолчанию.

10 голосов
/ 25 апреля 2011

Есть один для Decimal.Zero и несколько других более сложных типов, таких как TimeSpan.Zero, IntPtr.Zero и BigInteger.Zero.Но для обычных числовых типов просто используйте 0.

5 голосов
/ 25 апреля 2011

.Net Framework не определяет константы для таких значений, как 0. Если вы хотите использовать 0, просто используйте 0

Определенные числовые константы в .Net Framework обычно вращаются вокруг ограничений данного числового типа, значений, которые имеют особую актуальность, или случаев, когда нулевое значение требует специальной / сложной инициализации. Например

  • Int32.Max
  • Int32.Min
  • Double.NaN

Литерал 0 не подходит под эти категории для большинства числовых типов (Decimal является одним исключением)

2 голосов
/ 25 апреля 2011

Некоторые неизменяемые ссылочные типы имеют предопределенные экземпляры для «пустых» значений.Например, String определяет String.Empty.Это сделано потому, что действительная строка - даже без символов - должна ссылаться на действительный объект кучи, но если существует тысяча пустых переменных строки, все они могут ссылаться на один и тот же объект кучи.Если приложение не использует пустые строки вообще, создание одного экземпляра пустой строки при запуске приложения и предоставление возможности его совместного использования всем, кто нуждается в пустой строке, будет более эффективным, чем создание нового объекта пустой строки каждый раз.нужен один.

С типами значений такого преимущества не будет.Хотя объявлены некоторые константы типа-значения (например, Math.Pi), их объявление для удобства, а не эффективности.Сказать «myDouble = Math.Pi» не более эффективно, чем «MyDouble = 3.14159265358979323846264338327950288419716939937510 #» - это просто легче читать и проверять (если бы кто-нибудь взглянул на приведенный выше код, если бы первые «328» были опечатаны как «238»)?Если кто-то хочет, чтобы константа с плавающей точкой равнялась нулю, самой естественной и удобной для чтения нотацией было бы просто 0 #.

...