J'ai une variable bool
comme ceci:Pourquoi puis-je appliquer un opérateur null-conditionnel à une chaîne codée en dur?
bool myBool = true;
Si j'écris if (myBool == null)
je reçois l'avertissement suivant:
Le résultat de l'expression est toujours « faux » depuis une valeur de type « bool 'n'est jamais égal à' null 'de type' bool? '.
C'est clair pour moi car il n'est pas logique de vérifier si une variable non nullable est nulle. Visual Studio remarque cela et marque comme avertissement.
Maintenant, j'ai un string
, qui est nullable par défaut, comme je sais.
Pourquoi est-ce que je peux appliquer un opérateur null-conditionnel à un string
codé en dur sans Visual Studio s'en apercevoir? Je pense à quelque chose comme ceci:
"This is a string"?.AnyStringMethod();
ne devraient pas remarquer Visual Studio que cette string
est pas nul du tout?
Votre exemple 'bool' est le compilateur qui vous dit quelque chose sur le type. Votre exemple 'string' nécessiterait que le compilateur vous dise quelque chose sur la valeur. – juharr
@juharr' if (5 == 4) 'est une question de valeurs et n'est pas différente de la question de l'OP où il parle spécifiquement d'une' chaîne' littérale, une valeur sur laquelle le compilateur peut raisonner au moment de la compilation (il le fait déjà interner la valeur pour commencer). – InBetween
@InBetween Je soulignais juste la différence entre les exemples, ne déclarant pas que le compilateur ne peut pas considérer les valeurs lors de la génération des avertissements. – juharr