Maison > développement back-end > C++ > Pourquoi les types de valeurs nullables ne peuvent-ils pas être utilisés directement comme paramètres de type génériques en C# ?

Pourquoi les types de valeurs nullables ne peuvent-ils pas être utilisés directement comme paramètres de type génériques en C# ?

Barbara Streisand
Libérer: 2025-01-05 15:58:43
original
451 Les gens l'ont consulté

Why Can't Nullable Value Types Be Used Directly as Generic Type Parameters in C#?

Types nullables en tant que paramètres génériques

Les types de valeurs nullables, tels que int?, représentent la possibilité de contenir une valeur ou d'être nul. Bien que pratique pour gérer les données nullables, il existe des limites lors de leur utilisation comme paramètres génériques.

Considérez l'extrait de code suivant :

myYear = record.GetValueOrNull<int?>("myYear");
Copier après la connexion

Ce code tente d'attribuer la valeur nullable renvoyée par GetValueOrNull à une variable int nullable (myYear). Cependant, le compilateur renvoie une erreur : « Le type 'int ?' doit être un type référence afin de l'utiliser comme paramètre 'T' dans le type ou la méthode générique."

Le problème ici est que GetValueOrNull est défini pour renvoyer un type de référence (objet), pas une valeur nullable taper. Pour résoudre ce problème, modifiez le type de retour en Nullable et appelez la méthode avec un paramètre non nullable :

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;
}
Copier après la connexion

En changeant le type de retour en Nullable, nous nous assurons que la méthode renvoie un type de valeur nullable qui peut être attribué à des variables nullables comme myYear .

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!

source:php.cn
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