Maison  >  Article  >  développement back-end  >  Chaîne nullable C#

Chaîne nullable C#

WBOY
WBOYoriginal
2024-09-03 15:22:04637parcourir

En C#, il existe deux types de variables, les types valeur et les types référence. Les variables de type valeur ne peuvent pas être affectées à null, alors que nous pouvons attribuer null aux variables de type référence. Comme la chaîne est un type référence, elle peut être nulle. Dans cette rubrique, nous allons découvrir la chaîne nullable C#.

Pour attribuer null à un type valeur, nous devons utiliser Nullable structurer. Le type nullable ne peut être utilisé qu’avec des types valeur, pas avec des types référence. Nous ne pouvons donc pas utiliser nullable avec une chaîne. Nous pouvons stocker un nullable au lieu d'un type référence pour contenir une valeur nulle.

Syntaxe avec explication

La syntaxe pour attribuer null à une variable chaîne est la suivante :

string str = null;

Ici, str est une variable de type chaîne, et « null » est le mot-clé utilisé pour spécifier la valeur nulle. Dans l'instruction ci-dessus, nous attribuons directement null à la chaîne car il s'agit d'un type de référence et peut contenir une valeur nulle.

Nullable struct attribuera null à un type valeur. Sa syntaxe est la suivante :

Nullable<dataType> variableName = null;

Une autre façon d'utiliser le type Nullable est la suivante :

dataType? variableName = null;

Le dataType correspond aux deux instructions ci-dessus et correspond à n'importe quel type de données de type valeur, et variableName est le nom défini par l'utilisateur donné à la variable.

Comment travailler avec le type Nullable et la chaîne nulle en C# ?

Le type Nullable en C# attribue des valeurs nulles aux variables de type valeur telles que le type int, float, bool, etc., car elles ne peuvent pas stocker de valeurs nulles. D'un autre côté, nous ne pouvons pas utiliser nullable avec une chaîne ou toute autre variable de type référence car elle peut stocker directement une valeur nulle.

Un type nullable n'est rien d'autre qu'une instance d'une structure System.Nullable où T représente un type valeur de type de données. Par exemple, dans le type float nullable, nous pouvons stocker « vrai », « faux » et « nul ». Nous pouvons comprendre cela avec les déclarations ci-dessous :

//l'instruction ci-dessous est valide car nous pouvons stocker null dans nullable de bool

Nullable<bool> boolVal = null;

//l'instruction ci-dessous n'est pas valide car nous ne pouvons pas stocker null dans une variable de type bool

bool boolVal = null;

Lorsque nous utilisons l'instruction ci-dessus, nous obtiendrons une erreur disant : « Impossible de convertir null en bool car il s'agit d'un type de valeur non nullable. »

Une autre façon de créer un type nullable consiste à utiliser l'opérateur « ? », comme indiqué ci-dessous :

bool? boolVal = null;

Maintenant, pour accéder à la valeur d'un type nullable, nous devons utiliser la méthode GetValueOrDefault(). Avec l'aide de cette méthode, nous obtiendrons la valeur attribuée d'origine si la valeur n'est pas nulle. En revanche, si la valeur est nulle, nous obtiendrons la valeur par défaut de zéro.

En dehors de cela, nous pouvons utiliser Nullable.HasValue pour vérifier si l'objet a reçu une valeur ou non. Si l'objet a reçu une valeur, il retournera vrai si l'objet ne contient aucune valeur.

Nous ne pouvons pas utiliser le type nullable avec « var », et nous ne pouvons pas avoir le type nullable imbriqué ; cela nous donnera une erreur de compilation.

Maintenant, parlons de la chaîne nulle en C#. Nous pouvons directement attribuer null à une chaîne en C# et attribuer une chaîne avec 'string. Champ vide en lecture seule, qui indique que la chaîne est vide.

Nous ne pouvons appeler aucune méthode sur la chaîne nulle et ne pouvons utiliser aucune propriété de chaîne sur la chaîne nulle, alors que nous pouvons faire la même chose avec des chaînes vides. Par exemple, si nous vérifions la longueur d'une chaîne vide à l'aide d'une chaîne. Propriété length, nous obtiendrons le résultat à zéro, alors que si nous vérifions la longueur d'une chaîne nulle, nous obtiendrons une exception d'exécution indiquant « System.NullReferenceException : la référence d'objet n'est pas définie sur une instance d'un objet. Nous obtiendrons la même exception lorsque nous essaierons d’appeler une méthode de chaîne sur une chaîne nulle. En effet, une chaîne nulle n'est pas une instance d'un système. Chaîne. Nous pouvons comprendre cela à l'aide des déclarations suivantes :

Exemple de chaîne vide :

string str = string.Empty;
int a = str.Length; //the result of this statement will be zero

Exemple de chaîne nulle :

string str = null;
int a = str.Length; //this statement will give NullReferenceException

Exemples de chaîne nullable C#

Différents exemples sont mentionnés ci-dessous :

Exemple n°1

Exemple montrant comment créer un type nullable.

Code :

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main()
{
try
{
//defining nullable type for int
Nullable<int> intVal1 = null;
int result1;
Nullable<int> intVal2 = 53;
int result2;
//using GetValueOrDefault()
//to get value from nullable type
result1 = intVal1.GetValueOrDefault();
result2 = intVal2.GetValueOrDefault();
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch(Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}
}

Sortie :

Chaîne nullable C#

Exemples #2

Par exemple, il crée un type nullable à l'aide de l'opérateur '?' et vérifie s'il contient ou non une valeur à l'aide de HasValue.

Code :

using System;
public class Program
{
public static void Main()
{
try
{
//defining nullable type
//using '?' operator
int? intVal1 = null;
bool result1;
int? intVal2 = 53;
bool result2;
//using HasValue to check
// if the object has been assigned a value or not
result1 = intVal1.HasValue;
result2 = intVal2.HasValue;
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}

Sortie :

Chaîne nullable C#

Exemple #3

Exemple pour vérifier si une chaîne est nulle, vide ou contient une valeur à l'aide de la méthode IsNullOrEmpty().

Code :

using System;
public class Program
{
public static void Main()
{
string str1 = null;
string str2 = string.Empty;
string str3 = "Learning C#";
Console.WriteLine("str1 is null or empty: {0}", string.IsNullOrEmpty(str1));
Console.WriteLine("str2 is null or empty: {0}", string.IsNullOrEmpty(str2));
Console.WriteLine("str3 is null or empty: {0}", string.IsNullOrEmpty(str3));
Console.ReadLine();
}
}

Sortie :

Chaîne nullable C#

Conclusion

En C#, les variables de type valeur comme les variables de type int, float, bool, double, etc., ne peuvent pas stocker de valeur nulle, alors que les variables de type référence comme string peuvent stocker une valeur nulle. Pour stocker une valeur nulle dans des variables de type valeur, nous pouvons utiliser Nullable structure.

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
Article précédent:Fuite de mémoire C#Article suivant:Fuite de mémoire C#