Подтвердить что ты не робот

"Слишком много символов в символьной ошибке"

Я борюсь с куском кода и получаю ошибку:

Слишком много символов в символьной ошибке

Использование С# и оператора switch для итерации в буфере строк и чтения токенов, но получение ошибки в этой строке:

case '& &':

case '||':

case '==':

Как сохранить == и && как char?

4b9b3361

Ответ 1

Это связано с тем, что в С# одиночные кавычки ('') обозначают (или инкапсулируют) один символ, тогда как двойные кавычки ("") используются для строки символов. Например:

var myChar = '=';

var myString = "==";

Ответ 2

Вот пример:

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

Шары разделяются одинарными кавычками, а строки - двойными кавычками.

Хорошая новость: операторы switch С# работают со строками!

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

Ответ 3

Вы не можете рассматривать == или || как символы, поскольку они не являются символами, а представляют собой последовательность символов.

Вместо этого вы можете сделать свой переключатель... case для строк.

Ответ 4

A char может содержать только один символ, литерал символа является единственным символом в одинарной кавычке, т.е. '&' - если у вас больше символов, чем один, который вы хотите использовать в строке, для этого вам нужно использовать двойные кавычки:

case "&&": 

Ответ 5

Я считаю, что вы можете сделать это с помощью кодировки Unicode, но я сомневаюсь, что это то, что вы действительно хотите.

== - это значение unicode 2A76, поэтому я верю, что вы можете это сделать:

char c = '\u2A76';

Я не могу проверить это на данный момент, но мне было бы интересно узнать, работает ли это для вас.

Вам нужно будет копаться для других. Вот таблица Unicode, если вы хотите посмотреть:

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