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]

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

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!