Я выдернул свои волосы из-за неожиданного поведения из обнуляемых целых чисел.
- Если я установлю
Integer
на Nothing
, он станет Nothing
, как и ожидалось. - Если я установлю
Integer?
на String
, то есть Nothing
, оно станет 0!
Конечно, я получаю это независимо от того, явным образом приведу String
к Integer?
или нет.
Я понимаю, что могу обойти это довольно легко, но я хочу знать, чтоЯ скучаю.
Dim NullString As String = Nothing
Dim NullableInt As Integer? = CType(NullString, Integer?) 'Expected NullableInt to be Nothing, but it's 0!
NullableInt = Nothing 'This works, of course. NullableInt is Nothing.
РЕДАКТИРОВАТЬ: Ранее у меня был мой код здесь, так что без явного преобразования в Integer?
и все, казалось, были зациклены на этом / смущены.Было много предложений, чтобы Option Strict On уловил этот тип вещей.Тем не менее, это на самом деле из правил преобразования строки в целое число, которые предшествуют обнуляемым типам, но все же влияют на них.