Определите, является ли общий параметр нулевым типом
У меня есть следующая функция VB.NET, например:
Public Function MyFunction (Of TData) (ByVal InParam As Integer) As TData
End Sub
Как в функции определить, является ли TData NULLable Type?
Ответ 1
Один из способов:
If Nullable.GetUnderlyingType(GetType(TData)) <> Nothing
... по крайней мере, С#:
if (Nullable.GetUnderlyingType(typeof(TData)) != null)
Предположим, вы спрашиваете, является ли это типом значения с нулевым значением. Если вы спрашиваете, является ли это типом значений с нулевым значением или классом, то версия С# будет:
if (default(TData) == null)
но я не уверен, будет ли там работать простой перевод VB, поскольку в VB "Nothing" немного отличается.
Ответ 2
VB.net:
Dim hasNullableParameter As Boolean = _
obj.GetType.IsGenericType _
AndAlso _
obj.GetType.GetGenericTypeDefinition = GetType(Nullable(Of ))