web-dev-qa-db-fra.com

"Trop de caractères dans l'erreur littérale de caractère"

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?

47
Jinx

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 = "==";
96
Grant Thomas

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;
}
5

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.

2
driis

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 "&&": 
2
BrokenGlass

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:

http://www.tamasoft.co.jp/en/general-info/unicode.html

1
Abe Miessler