Маркировка параметров как обнуляемых - PullRequest
1 голос
/ 22 декабря 2009

Я получил некоторый код от коллеги, и в одном из его методов он имеет логический параметр: ByVal showProactiveChases As Boolean?. Вчера мне пришлось искать оператор ?, чтобы увидеть, что он обозначает тип Nullable. Мой вопрос: если я изменю его на: ByVal showProactiveChases As Nullable(Of Boolean), останется ли значение таким же? Я думаю, при условии, что это не меняет смысла, второй способ гораздо более читабелен.

Ответы [ 4 ]

3 голосов
/ 22 декабря 2009

Да, значение точно такое же.

Boolean? и Nullable(Of Boolean) будут скомпилированы в один и тот же IL.

(лично я нахожу первую версию более читабельной, но все зависит от личного вкуса.)

2 голосов
/ 22 декабря 2009

Есть и третий вариант :

В следующем примере создается обнуляемый логический тип и объявляет переменная этого типа. Ты можешь написать декларация тремя способами:

Dim ridesBusToWork1? As Boolean
Dim ridesBusToWork2 As Boolean?
Dim ridesBusToWork3 As Nullable(Of Boolean)
0 голосов
/ 22 декабря 2009

Да,? оператор на самом деле является сокращением для Nullable или Nullable (Of T).

0 голосов
/ 22 декабря 2009

Да, это то же самое.

? это сокращение для Nullable<T>

...