Значение по умолчанию переменной во время объявления в С# и VB?

Может ли кто-нибудь сказать мне, что является значением по умолчанию переменной во время объявления в С# и vb??

Ответы

Ответ 1

В С# вы можете использовать ключевое слово по умолчанию для определения значений по умолчанию.

Например:

default(bool)
default(int)
default(int?)

Ответ 2

Вы имеете в виду переменную (метод)? или поле (на экземпляре или типе)?

Для переменной уровня метода (по крайней мере, на С#) это не имеет значения, так как "определенное присвоение" означает, что вы должны дать ему значение, прежде чем вы сможете его прочитать.

Поля по умолчанию для побитового нуля:

  • для ссылочных типов (включая строку), что означает null
  • для Nullable<T> (int? и т.д.), что означает null
  • для чисел, что означает 0
  • для перечислений, что означает 0 , даже если не определено 0-значное перечисление
  • для bools, что означает false
  • для DateTime, это значит, что значение MinValue
  • для других структур, вам придется проверить их документацию, но это будет (надеюсь, разумное) значение "нуль/пусто"

Ответ 3

Это можно найти в MSDN:

Visual Basic.NET определяет следующие примитивные типы:

Интегрированные типы значений Byte (1-байтное целое без знака), Short (2-байтовое целое число со знаком), Integer (4-байтовое целое число со знаком) и Long (8-байтовое целое число со знаком). Эти типы сопоставляются с System.Byte, System.Int16, System.Int32 и System.Int64 соответственно. Значение по умолчанию для интегрального типа эквивалентно литералу 0.

Типы значений с плавающей запятой Single (4-байтная с плавающей запятой) и Double (8-байтная с плавающей запятой). Эти типы сопоставляются с System.Single и System.Double, соответственно. Значение по умолчанию для типа с плавающей запятой эквивалентно литералу 0.

Десятичный тип (16-разрядное десятичное значение), который сопоставляется с System.Decimal. Значение десятичного значения по умолчанию эквивалентно литералу 0D.

Тип логического значения, представляющий значение истины, обычно является результатом реляционной или логической операции. Литерал имеет тип System.Boolean. Значение по умолчанию для типа Boolean эквивалентно литералу False.

Тип значения даты, который представляет дату и/или время и сопоставляется с System.DateTime. Значение по умолчанию типа Date эквивалентно литералу # 01/01/0001 12:00:00 AM #.

Тип значения Char, который представляет один символ Unicode и сопоставляется с System.Char. Значение по умолчанию для типа Char эквивалентно константному выражению ChrW (0).

Тип ссылки String, который представляет последовательность символов Unicode и карты в System.String. Значение по умолчанию для типа String - это нулевая ссылка.

http://msdn.microsoft.com/en-us/library/aa711900.aspx

Ответ 4

Спецификация языка С# заявляет, что для типов значений значение по умолчанию такое же, как значение, назначенное конструктором по умолчанию, и для ссылочных типов оно равно null: p >

Значения типов значений по умолчанию:

Для всех простых типов по умолчанию значение - это значение, полученное бит шаблон всех нулей:

  • Для sbyte, byte, short, ushort, int, uint, long и ulong, значение по умолчанию равно 0.

  • Для char значением по умолчанию является "\ x0000". Для float по умолчанию значение равно 0.0f.

  • Для double значение по умолчанию равно 0.0d. Для десятичного значения по умолчанию используется значение 0.0m. Для bool значение по умолчанию - false.

  • Для параметра enum-typeE значение по умолчанию равно 0.

  • Для структурного типа значением по умолчанию является значение, созданное установка всех полей типа значения в их значение по умолчанию и все поля ссылочного типа в null.

http://msdn.microsoft.com/en-us/library/aa691142(v=VS.71).aspx

Строка не является типом значения.

Ответ 5

Зависит от типа переменной. Если тип может быть пустым, значение по умолчанию будет равно null. Nullable типы будут начинаться с нуля.

  • Сложные типы (String, StringBuilder) = null
  • Числовые типы (int, decimal, double, byte) = 0
  • Boolean = false
  • DateTime = DateTime.MinValue(01/01/0001 00:00:00)

Вы можете установить начальное значение, используя:

строка s1 = "test";

Dim s1 As String = "test"