Maison >développement back-end >C++ >Comment les types nullables peuvent-ils être utilisés comme paramètres génériques pour les fonctions de type valeur gérant les valeurs nulles potentielles de DbDataRecords ?

Comment les types nullables peuvent-ils être utilisés comme paramètres génériques pour les fonctions de type valeur gérant les valeurs nulles potentielles de DbDataRecords ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 12:45:47486parcourir

How Can Nullable Types Be Used as Generic Parameters for Value-Type Functions Handling Potential Null Values from DbDataRecords?

Autoriser les types nullables en tant que paramètres génériques pour les fonctions de type valeur

Considérez la nécessité de récupérer des valeurs à partir de DbDataRecords avec la possibilité de valeurs nulles. Une tentative d'utilisation de types nullables comme paramètres génériques a initialement conduit à une erreur indiquant que le type nullable doit être un type référence. Par la suite, la modification de la contrainte en structs a entraîné une autre erreur indiquant que le type nullable doit être non nullable.

Pour résoudre ce problème, la solution consiste à modifier le type de retour en Nullable et invoquez la fonction avec un paramètre non nullable. Le code révisé est :

static void Main(string[] args)
{
    int? i = GetValueOrNull<int>(null, string.Empty);
}

public static Nullable<T> GetValueOrNull<T>(DbDataRecord reader, string columnName) where T : struct
{
    object columnValue = reader[columnName];

    if (!(columnValue is DBNull))
        return (T)columnValue;

    return null;
}

Désormais, les types nullables peuvent servir de paramètres génériques pour les fonctions gérant les types de valeurs, tout en permettant la possibilité de valeurs nulles lors d'opérations impliquant DbDataRecords.

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