valores valor validar tipo tener solo ser que puede objeto nulo lectura implicitamente distinto debe convertir bool acepta .net vb.net generics nullable

.net - valor - validar si un objeto es null c#



Determinar si un param genérico es un tipo Nullable (3)

Tengo la siguiente función de VB.NET, por ejemplo:

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

¿Cómo determino, en una función, si TData es un tipo NULLable?


Puede usar el código proporcionado en esta answer , agregar una extensión

public static bool IsNullable(this Type type) { Contract.Requires(type != null); return type.IsDerivedFromOpenGenericType(typeof(Nullable<>)); }

y decir

bool nullable = typeof(TData).IsNullable();


Una forma es:

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

... al menos, el C # es:

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

Eso es asumiendo que está preguntando si es un tipo de valor que puede ser anulado. Si está preguntando si se trata de un tipo de valor que puede ser anulado o una clase, entonces la versión de C # sería:

if (default(TData) == null)

pero no estoy seguro de si una traducción simple de VB funcionaría allí, ya que "Nothing" es ligeramente diferente en VB.


VB.net:

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

DO#:

bool hasNullableParameter = obj.GetType().IsGenericType && obj.GetGenericTypeDefinition().Equals(typeof(Nullable<>));