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'
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

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!