Ответ 1
Это связано с тем, что в С# одиночные кавычки (''
) обозначают (или инкапсулируют) один символ, тогда как двойные кавычки (""
) используются для строки символов. Например:
var myChar = '=';
var myString = "==";
Я борюсь с куском кода и получаю ошибку:
Слишком много символов в символьной ошибке
Использование С# и оператора switch для итерации в буфере строк и чтения токенов, но получение ошибки в этой строке:
case '& &':
case '||':
case '==':
Как сохранить ==
и &&
как char?
Это связано с тем, что в С# одиночные кавычки (''
) обозначают (или инкапсулируют) один символ, тогда как двойные кавычки (""
) используются для строки символов. Например:
var myChar = '=';
var myString = "==";
Вот пример:
char myChar = '|';
string myString = "||";
Шары разделяются одинарными кавычками, а строки - двойными кавычками.
Хорошая новость: операторы switch С# работают со строками!
switch (mytoken)
{
case "==":
//Something here.
break;
default:
//Handle when no token is found.
break;
}
Вы не можете рассматривать ==
или ||
как символы, поскольку они не являются символами, а представляют собой последовательность символов.
Вместо этого вы можете сделать свой переключатель... case для строк.
A char может содержать только один символ, литерал символа является единственным символом в одинарной кавычке, т.е. '&'
- если у вас больше символов, чем один, который вы хотите использовать в строке, для этого вам нужно использовать двойные кавычки:
case "&&":
Я считаю, что вы можете сделать это с помощью кодировки Unicode, но я сомневаюсь, что это то, что вы действительно хотите.
==
- это значение unicode 2A76, поэтому я верю, что вы можете это сделать:
char c = '\u2A76';
Я не могу проверить это на данный момент, но мне было бы интересно узнать, работает ли это для вас.
Вам нужно будет копаться для других. Вот таблица Unicode, если вы хотите посмотреть: