web-dev-qa-db-ja.com

「文字リテラルエラーの文字が多すぎます」

私はコードに苦労しており、エラーを取得しています:

文字リテラルエラーの文字が多すぎます

C#とswitchステートメントを使用して文字列バッファーを反復処理し、トークンを読み取りますが、次の行でエラーを取得します。

ケース '&&':

ケース '||':

ケース '==':

どうすれば==および&&文字として?

47
Jinx

これは、C#では、単一引用符('')は単一の文字を示します(またはカプセル化します)が、二重引用符("")は文字列に使用されます。例えば:

var myChar = '=';

var myString = "==";
96
Grant Thomas

以下に例を示します。

char myChar = '|';
string myString = "||";

文字は一重引用符で区切られ、文字列は二重引用符で区切られます。

良いニュースは、C#switchステートメントが文字列で機能することです!

switch (mytoken)
{
    case "==":
        //Something here.
        break;
    default:
        //Handle when no token is found.
        break;
}
5

==または||は、charsではなくcharのシーケンスであるため、charsとして処理できません。

代わりに、switch ... caseを文字列で機能させることができます。

2
driis

文字は単一の文字のみを保持でき、文字リテラルは単一引用符で囲まれた単一の文字、つまり'&'-文字列を使用したい文字が複数ある場合は、二重引用符を使用する必要があります。

case "&&": 
2
BrokenGlass

Unicodeエンコードを使用してこれを行うことができると思いますが、これが本当に必要なことではないかと思います。

==はUnicode値2A76なので、これを行うことができると信じています。

char c = '\u2A76';

現時点ではこれをテストすることはできませんが、それがあなたに役立つかどうか知りたいと思います。

他の人のために掘り下げる必要があります。ご覧になりたい場合は、Unicodeテーブルをご覧ください。

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

1
Abe Miessler