Je me bats avec un morceau de code et j'obtiens l'erreur:
Trop de caractères dans l'erreur littérale de caractère
Utilisation de C # et d'une instruction switch pour parcourir un tampon de chaîne et lire des jetons, mais en obtenant l'erreur dans cette ligne:
cas '&&':
cas '||':
case '==':
Comment puis-je garder le ==
et &&
comme un char?
En effet, en C #, les guillemets simples (''
) désigne (ou encapsule) un seul caractère, alors que les guillemets doubles (""
) sont utilisés pour une chaîne de caractères. Par exemple:
var myChar = '=';
var myString = "==";
Voici un exemple:
char myChar = '|';
string myString = "||";
Les caractères sont délimités par des guillemets simples et les chaînes par des guillemets doubles.
La bonne nouvelle est que les instructions de commutateur C # fonctionnent avec des chaînes!
switch (mytoken)
{
case "==":
//Something here.
break;
default:
//Handle when no token is found.
break;
}
Vous ne pouvez pas traiter ==
ou ||
en tant que caractères, car ils ne sont pas des caractères, mais une séquence de caractères.
Vous pouvez faire en sorte que votre casse fonctionne sur les chaînes.
Un caractère ne peut contenir qu'un seul caractère, un littéral de caractère est un seul caractère entre guillemets, c'est-à-dire '&'
- si vous avez plus de caractères que ceux pour lesquels vous voulez utiliser une chaîne, vous devez pour cela utiliser des guillemets doubles:
case "&&":
Je pense que vous pouvez le faire en utilisant un encodage Unicode, mais je doute que ce soit ce que vous souhaitiez vraiment.
Le ==
est la valeur unicode 2A76, je pense donc que vous pouvez le faire:
char c = '\u2A76';
Je ne peux pas tester cela pour le moment, mais j'aimerais savoir si cela vous convient.
Vous aurez besoin de creuser pour les autres. Voici une table unicode si vous voulez regarder: