Я - программист C#, но преобразовываю некоторый код от C# до VB.NET. В c# я могу просто использовать (int)blah.getValue()
где getValue()
возвраты Integer?
Выполнение a DirectCast()
в VB.NET не работает хотя, говоря Integer?
не может быть преобразован в Integer
.
Идеи?
Целочисленное? является нулевым типом, так что, возможно, вам придется преобразовать его в нулевое целое число.
Вы хотите использовать функцию CType типа так, 'Целое' или 'Целое?'. В зависимости от вашей ситуации
Val = CType(Source,Integer?)
Используйте свойство value для получения действительного целочисленного значения.
Dim intNullable As Integer?
If intNullable.HasValue Then
Return intNullable.Value
End If
Вы должны использовать функцию CType следующим образом:
CType(blah.getValue(), Integer)
dim a as integer? = 1
dim b as integer = a.value
Не забудьте проверить, имеет ли a.hasvalue (возвращает логическое значение, истина, если a имеет значение).
myNonNullableVar = if(myNullableVar, 0)
установит 0, если целое число? имеет значение null или возвращает фактическое значение.
В C # это будет:
myNonNullableVar = myNullableVar ?? 0;