VB.NET: есть ли способ, чтобы ничего не по умолчанию не равнялось 0 для числовых типов?

Меня действительно беспокоит, что IDE VS 2010 не лает на меня за попытку передать Nothing через параметр метода, который принимает пользовательское перечисление. Вместо этого он передает 0 в метод. C# никогда не допустит этого. Есть ли какой-то модификатор уровня модуля, который я могу добавить как option strict что заставит IDE не разрешать эти типы неявных преобразований?

2 ответа

Решение

К сожалению нет.


Но вы можете присваивать значения своим членам перечисления при пропуске 0 (или используйте заполнитель с именем None или что-то подобное), и, по крайней мере, обрабатывать это дело во время выполнения.

Sub Main
    MyMethod(Nothing) ' throws Exception
End Sub

Sub MyMethod(e as MyEnum)
    If e = 0 Then
        Throw New Exception
    End If
End Sub

Enum MyEnum
    a=1
    b=2
    c=3
End Enum

Ничто не является эквивалентом по умолчанию в языке C#. Так что нет.

Пересмотрите свой стиль программирования, ничто не должно использоваться очень экономно. В основном только в общем коде, то же самое место, где вы будете использовать по умолчанию в C#. Вам это больше нигде не нужно, VB.NET не требует инициализации переменных, как в C#. Любая переменная ссылочного типа автоматически инициализируется значением Nothing. Может быть, крена достойна программиста на C#, но совершенно идиоматична в коде VB.NET.

Другие вопросы по тегам