Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determine if a generic param is a Nullable type

Tags:

I have the following VB.NET function, for example:

Public Function MyFunction (Of TData) (ByVal InParam As Integer) As TData  End Sub 

How do I, in a function, determine if TData is a NULLable Type?

like image 595
Chad Avatar asked Mar 03 '11 13:03

Chad


2 Answers

One way is:

If Nullable.GetUnderlyingType(GetType(TData)) <> Nothing 

... at least, the C# is:

if (Nullable.GetUnderlyingType(typeof(TData)) != null) 

That's assuming you're asking whether it's a nullable value type. If you're asking whether it's a nullable value type or a class then the C# version would be:

if (default(TData) == null) 

but I'm not sure whether a simple VB translation would work there, as "Nothing" is slightly different in VB.

like image 196
Jon Skeet Avatar answered Oct 07 '22 01:10

Jon Skeet


VB.net:

Dim hasNullableParameter As Boolean = _         obj.GetType.IsGenericType _         AndAlso _         obj.GetType.GetGenericTypeDefinition = GetType(Nullable(Of )) 

C#:

bool hasNullableParameter =          obj.GetType().IsGenericType &&          obj.GetGenericTypeDefinition().Equals(typeof(Nullable<>)); 
like image 21
Dennis Traub Avatar answered Oct 07 '22 00:10

Dennis Traub