Что происходит, когда я устанавливаю переменную на ничего в VB.NET? Правда ли, что ничто не равно умолчанию, или я что-то здесь не вижу?Нет равных по умолчанию?
ответ
Если это тип значения (например, Integer, Double и т. Д.), То значение переменной Nothing будет установлено в значение по умолчанию.
Если это ссылочный тип, для него действительно будет установлено значение Nothing (значение null).
нет Назначение Nothing к переменной устанавливает его значение по умолчанию для его заявленного типа.
Если переменная типа опорного , значение Ничто означает, что переменная не связана с любого объекта. Переменная имеет значение null .
Он равен умолчанию по ValueTypes или Structs и равен нулю для типов объектов.
Предполагая, VB.NET во многом похож на C#, null
, который называется Nothing
в VB.NET означает, что ссылка не указывает ни на что. Все типы имеют значения по умолчанию, если они объявлены, но не назначены: например, значение по умолчанию для int
s равно 0
. Значение по умолчанию для ссылочных типов - это нулевое значение Nothing
. Таким образом, неназначенная переменная ссылочного типа будет иметь значение Nothing
(null).
Там хорошо блог статьи на Null vs Nothing Эрик Липперт
Ничего не равны по умолчанию во всех случаях.
Что действительно может укусить вас в том, что если у вас есть конструкция, как это в C#
int? result = (a != null ? a.b : (int?)null);
и заменить его следующим VB (который компилируется)
Dim result As Integer? = If(a IsNot Nothing, a.b, Nothing)
Что будет результатом?
Ответ заключается в том, что он будет 0, а не null.
- 1. Реализация метода равных по умолчанию для протокола
- 2. Нет конструктора по умолчанию?
- 3. Android - нет конструктора по умолчанию
- 4. MonoTouch.Dialog: Нет Значение по умолчанию
- 5. по умолчанию backgroundColor или нет?
- 6. ImportError: Нет модуля по умолчанию
- 7. Нет подходящего конструктора по умолчанию
- 8. Как применить сортировку по умолчанию в lucene на равных оценках?
- 9. Нет подходящего конструктора по умолчанию - Где вызван конструктор по умолчанию?
- 10. нет подходящей ошибки по умолчанию для компилятора по умолчанию
- 11. Как проверить выбор по умолчанию выбран по умолчанию или нет?
- 12. Сортировка по большинству равных текстов
- 13. алгоритма равных групп по характеристикам
- 14. Использует hashCode для реализации равных нет?
- 15. Почему нет равных, представленных ~ = в Matlab?
- 16. preg_match: ничего не повторять/нет равных
- 17. Нет По умолчанию Дата в SWT DateTime
- 18. React router - нет маршрута по умолчанию
- 19. У члена нет конструктора по умолчанию
- 20. jquery dialog - нет кнопки по умолчанию
- 21. Android Manifest: нет активности по умолчанию?
- 22. Почему у QAction нет конструктора по умолчанию?
- 23. По умолчанию Нет в msgbox C#
- 24. По умолчанию Весна боба, когда профиль нет
- 25. Деревья слоев Нет подходящего конструктора по умолчанию
- 26. Построить только по умолчанию (нет вкусов/вариантов)
- 27. Heroku Deploy Ошибка: Нет Язык по умолчанию
- 28. Scala - Карта со значением по умолчанию Нет?
- 29. нет необходимости конструктора по умолчанию доступна ошибка
- 30. Диалоговое окно «Диалоговое окно» по умолчанию «Нет»?
-1. Это отличная статья, но речь идет о ** VBScript **, и речь идет о ** Visual Basic.Net **. Они ведут себя совершенно по-другому - VBScript имеет только «Variants» не сильно типизированные переменные. – MarkJ
@Mark: и все же ответ такой же увядает, что это VB.Net или VBScript. –
Ссылка для меня не работает. Попробуйте http://blogs.msdn.com/b/ericlippert/archive/2003/09/30/53120.aspx – Justin