Prüft, ob ein Typ auch (null)-Werte annehmen kann, wie z.B. 'bool?' oder 'object'
using System;
namespace MarcelJKloubert
{
public static Tools
{
/// <summary>
/// Prüft, ob ein Typ (null)-Werte annehmen kann oder nicht
/// </summary>
/// <param name="type">Typ, der geprüft werden soll</param>
/// <returns>Kann (null)-Werte annehmen (true) oder nicht (false)</returns>
public static bool IsNullable(Type type)
{
if (null == type)
{
throw new ArgumentNullException("type");
}
if (!type.IsValueType)
{
// kein Wertetyp, daher kann der Typ (null)-Werte annehmen
return true;
}
// Wenn Nullable.GetUnderlyingType() einen übergeordneten Typ ermitteln kann,
// bedeutet dies, dass dies ein Wertetyp ist, der (null)-Werte annehmen kann,
// z.B. bool?
return Nullable.GetUnderlyingType(type) is Type;
}
}
}
3 Kommentare zum Snippet