2009-12-29 4 views

ответ

8

Если это тип значения (например, Integer, Double и т. Д.), То значение переменной Nothing будет установлено в значение по умолчанию.

Если это ссылочный тип, для него действительно будет установлено значение Nothing (значение null).

В Microsoft's words:

нет Назначение Nothing к переменной устанавливает его значение по умолчанию для его заявленного типа.

Если переменная типа опорного , значение Ничто означает, что переменная не связана с любого объекта. Переменная имеет значение null .

1

Он равен умолчанию по ValueTypes или Structs и равен нулю для типов объектов.

0

Предполагая, VB.NET во многом похож на C#, null, который называется Nothing в VB.NET означает, что ссылка не указывает ни на что. Все типы имеют значения по умолчанию, если они объявлены, но не назначены: например, значение по умолчанию для int s равно 0. Значение по умолчанию для ссылочных типов - это нулевое значение Nothing. Таким образом, неназначенная переменная ссылочного типа будет иметь значение Nothing (null).

0

Там хорошо блог статьи на Null vs Nothing Эрик Липперт

Ничего не равны по умолчанию во всех случаях.

+2

-1. Это отличная статья, но речь идет о ** VBScript **, и речь идет о ** Visual Basic.Net **. Они ведут себя совершенно по-другому - VBScript имеет только «Variants» не сильно типизированные переменные. – MarkJ

+0

@Mark: и все же ответ такой же увядает, что это VB.Net или VBScript. –

+0

Ссылка для меня не работает. Попробуйте http://blogs.msdn.com/b/ericlippert/archive/2003/09/30/53120.aspx – Justin

1

Что действительно может укусить вас в том, что если у вас есть конструкция, как это в C#

int? result = (a != null ? a.b : (int?)null); 

и заменить его следующим VB (который компилируется)

Dim result As Integer? = If(a IsNot Nothing, a.b, Nothing) 

Что будет результатом?

Ответ заключается в том, что он будет 0, а не null.

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