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.