int n == 0;
if (n == null)
{
Console.WriteLine("......");
}
Est-il vrai que le résultat de l'expression (n == null
) est toujours false
puisque
a valeur de type int
n'est jamais égale ànull
DE TYPE int?
(voir l'avertissement ci-dessous)
Avertissement CS0472 Le résultat de l'expression est toujours 'faux' car une valeur de type 'int' n'est jamais égale à 'null' de type 'int?'
Si vous souhaitez que votre variable entière autorise les valeurs NULL, déclarez-la à un type nullable :
int? n = 0;
Notez le ?
après int, ce qui signifie que ce type peut avoir la valeur null
. Les types nullables ont été introduits avec la version 2.0 du .NET Framework.
En C #, l'utilisation d'une variable non initialisée n'est pas autorisée.
Alors
int i;
Console.Writeline(i);
Résultat en une erreur de compilation.
Vous pouvez initialiser int avec de nouveaux tels que:
int anInt = new int();
Cela donnera le Valeur par défaut for int qui est 0. Dans les cas où vous souhaitez avoir une variable générique int
, vous pouvez rendre l'int entier nullable avec la syntaxe.
int? nullableInt = null;
Parce que int
est un type de valeur plutôt qu'un type de référence. La spécification du langage C # n'autorise pas une int
à contenir null. Essayez de compiler cette déclaration:
int x = null ;
et voyez ce que vous obtenez.
Vous recevez l'avertissement du compilateur parce que c'est un test inutile et que le compilateur le sait.
Les "types de valeur" dans .NET (comme int, double et bool) ne peuvent pas, par définition, être nuls - ils ont toujours une valeur réelle assignée. Découvrez cette bonne introduction aux types de valeur par rapport aux types de référence.
En termes simples, un int est un élément très basique. C'est petit et simple pour pouvoir le manipuler rapidement. Elle est gérée directement comme la valeur, pas le long du modèle objet/pointeur. En tant que tel, il n’ya pas de valeur "NULL" légale à avoir. Il contient simplement ce qu'il contient. 0 signifie un 0. Contrairement à un pointeur, où 0 serait NULL. Un objet stockant un 0 aurait toujours un pointeur différent de zéro.
Si vous en avez l'occasion, prenez le temps de faire du travail de vieille école ou de travail en assemblée, cela deviendra beaucoup plus clair.
L'utilisation de NULL s'applique aux pointeurs et aux références en général. Une valeur 0 attribuée à un entier n'est pas nulle. Toutefois, si vous pouvez affecter un pointeur à l'entier et l'attribuer à NULL, l'instruction est valide.
En résumé =>
/*Use the keyword 'null' while assigning it to pointers and references. Use 0 for integers.*/
Non, car int
est un type de valeur. int
est un type Value
comme Date
, double
, etc. Il n'y a donc aucun moyen d'assigner une valeur null
.
public static int? n { get; set; } = null;
OU
public static Nullable<int> n { get; set; }
ou
public static int? n = null;
ou
public static int? n
ou juste
public static int? n { get; set; }
static void Main(string[] args)
{
Console.WriteLine(n == null);
//you also can check using
Console.WriteLine(n.HasValue);
Console.ReadKey();
}
Le mot clé null est un littéral qui représente une référence null, qui ne fait référence à aucun objet. En programmation, les types nullables sont une caractéristique du système de types de certains langages de programmation qui permettent de définir la valeur sur la valeur spéciale NULL au lieu des valeurs possibles habituelles du type de données.
https://docs.Microsoft.com/en-us/dotnet/csharp/language-reference/keywords/nullhttps://en.wikipedia.org/wiki/Null