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

Comment puis-je déterminer si un type de valeur en C# est nullable ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-13 11:58:42450parcourir

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

Vérifier les types de valeurs nullables

La détermination de la nullité d'un objet est un problème courant lorsqu'il s'agit de types valeur. Lors de la vérification des types valeur nullables, vous devez faire la distinction entre les types valeur nullables et les types référence nullables. Dans ce cas, nous devons identifier les types de valeur qui peuvent implicitement contenir des valeurs nulles. Voici comment y parvenir :

<code class="language-csharp">bool IsNullableValueType(object o)
{
    if (o == null) return true; // 显而易见的情况
    Type type = o.GetType(); // 修正:使用 o.GetType() 获取对象的实际类型
    if (!type.IsValueType) return true; // 引用类型
    if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T>
    return false; // 值类型
}</code>

Cette méthode évalue le type d'objet :

  • Si un objet est nul, il est considéré comme nullable.
  • Un objet est également nullable s'il s'agit d'un type référence (plutôt qu'un type valeur).
  • Un objet est nullable si son type sous-jacent est nullable (déterminé par Nullable.GetUnderlyingType).
  • Sinon, il s'agit d'un type de valeur non nullable.

Dans votre exemple, bc.myBool fait référence à une valeur bool non nullable, et obj ne sera pas une instance de Nullable<bool> . Pour gérer cette situation, créez un wrapper nullable autour de IsNullableValueType(bc.myBool) uniquement si true est évalué à obj .

Instructions d'amélioration du code : Il y a une erreur dans Type type = typeof(T); dans le code d'origine car T n'est pas défini. Cela a été corrigé en Type type = o.GetType();, en utilisant le type d'exécution de l'objet pour le jugement.

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