Feedback

C# - Prüfen, ob ein Typ (null)-Werte annehmen kann

Veröffentlicht von am 24.10.2009
(3 Bewertungen)
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;
        }
    }
}
Abgelegt unter nullable valuetype ?.

3 Kommentare zum Snippet

Christopher Kk schrieb am 25.10.2009:
Könnte man eventuell als Extension Method bauen :D
Christopher Kk schrieb am 25.10.2009:
Ein bissel abgewandelt:
public static class 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(this object type)
{

Type realType = type.GetType();
if (null == type)
{
throw new ArgumentNullException("type");
}

if (!realType.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(realType) is Type;
}
}


Und shcon hat man ne geile Extension.
Ich find das snippet gut :D
Marcel Kloubert schrieb am 30.10.2009:
ja, das finde ich sogar noch ne VIEL bessere Lösung! :-) dann kann man das "if (null == type)" ja weglassen...
 

Logge dich ein, um hier zu kommentieren!