2011-04-09 20 views
36

jestem zmaga się z kawałkiem kodu i uzyskanie błąd:„Zbyt wiele znaków w postaci dosłownej błędu”

Too many characters in character literal error

Korzystanie z C# i switch iterację buforze smyczkową i czytania znaków, ale coraz błąd w tej linii:

case '&&':

case '||':

case '==':

jak mogę zachować == i && jako char?

+7

To nie są pojedyncze znaki ... – delnan

Odpowiedz

2

Nie można traktować znaków == ani ||, ponieważ nie są znakami, ale ciągiem znaków.

Możesz ustawić przełącznik ... zamiast tego działa skrzynka na napisach.

2

Znak może zawierać tylko jeden znak, literałem znaku jest pojedynczy znak w jednym cudzysłowie, tzn. '&' - jeśli masz więcej znaków niż jeden, musisz użyć podwójnego cudzysłowu:

case "&&": 
76

to dlatego, że w C#, apostrofów ('') oznacza (lub hermetyzacji) pojedynczy znak, natomiast cudzysłowy ("") są używane przez ciąg znaków. Na przykład:

var myChar = '='; 

var myString = "=="; 
+3

Java zbyt FWIW (tylko dowiedział się, że dzięki tej odpowiedzi) – JimLohse

+2

OP, jeśli kiedykolwiek ponownie zalogować , wybierz to jako najlepszą odpowiedź. – jhhoff02

3

Oto przykład:

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

Znaki są ograniczone apostrofami i struny przez cudzysłów.

Dobrą wiadomością jest to, że instrukcje C# switch działają z ciągami!

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

Wierzę, że można to zrobić za pomocą kodowania Unicode, ale wątpię, czy to naprawdę jest to, czego naprawdę chcesz.

== jest wartość Unicode 2A76 więc wierzę, można to zrobić:

char c = '\u2A76'; 

nie mogę przetestować tego w tej chwili, ale byłbym zainteresowany, aby wiedzieć, czy to działa dla Ciebie.

Będziesz musiał szukać innych. Oto tabela Unicode, jeśli chcesz wyglądać:

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

+3

U + 2A76 to "TRZECIE KONSEKUTYWNE ZNAKI ZNAKÓW", a nie dwa (patrz: http://www.fileformat.info/info/unicode/char/2a76). I nie ma to nic wspólnego z sekwencją znaków '==', jak w typowym pliku źródłowym. –

Powiązane problemy