Maison > développement back-end > C++ > Comment puis-je déterminer de manière fiable si un type est nullable en C# ?

Comment puis-je déterminer de manière fiable si un type est nullable en C# ?

Patricia Arquette
Libérer: 2025-01-13 11:47:42
original
943 Les gens l'ont consulté

How Can I Reliably Determine if a Type is Nullable in C#?

Une méthode améliorée pour déterminer de manière fiable si un type C# est nullable

Pour déterminer si un objet est explicitement déclaré comme type nullable, vous devez connaître son type sous-jacent et vérifier s'il s'agit d'un type valeur nullable. Bien que cela puisse être réalisé à l'aide de la conversion et de la réflexion de valeurs, cette approche n'est pas exhaustive car elle exclut les types de référence nullables.

Une solution plus robuste consiste à utiliser des génériques et l'inférence de type pour déterminer la nullité d'un type donné, comme suit :

static bool IsNullable<T>(T obj)
{
    if (obj == null) return true; // 明显可空
    Type type = typeof(T);
    if (!type.IsValueType) return true; // 引用类型
    if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T>
    return false; // 值类型
}
Copier après la connexion

Cette méthode utilise la méthode Nullable.GetUnderlyingType pour déterminer si le type fourni est de type Nullable<T>. En déterminant le type sous-jacent, il peut distinguer avec précision les types de valeur nullables et non nullables.

Bien que cette méthode soit très efficace lorsque vous travaillez avec des types génériques, elle peut être moins efficace lorsque vous travaillez avec des types de valeurs encadrées. Si la valeur a été encadrée dans un objet, son type sous-jacent est plus difficile à identifier.

Pour plus d'informations sur l'identification des types nullables, veuillez vous référer à :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal