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
Patricia Arquetteoriginal
2025-01-13 11:47:42880parcourir

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 :

<code class="language-csharp">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; // 值类型
}</code>

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:
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