.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<>));