"字符文字太多的错误"

79
我在编写代码时遇到了问题,出现了以下错误:

字符文字中的字符太多错误

我使用 C# 语言中的 switch 语句迭代字符串缓冲区并读取标记,但是在以下这行代码中出现了错误:

case '&&':

case '||':

case '==':

我该如何将 ==&& 保留为字符?

13
那些不是单个字符... - user395760
6个回答

151

这是因为在 C# 中,单引号('')表示一个字符,而双引号("")用于表示一串字符。例如:

var myChar = '=';

var myString = "==";

12

这里有一个例子:

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

单引号用于分隔字符,双引号用于表示字符串。

好消息是C#的switch语句可以处理字符串!

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

2

你不能把==||看作字符,因为它们不是字符,而是一系列字符。

相反,你可以让你的switch...case处理字符串。


2

一个 char 只能保存单个字符,字符字面值是单引号中的单个字符,例如 '&'。如果你有多个字符需要使用字符串,那么你需要使用双引号:

case "&&": 

2

我遇到了同样的问题。 String.Replace('\\.','') 不是有效的语句,会抛出相同的错误。 由于C#允许我们使用双引号而不是单引号,因此以下代码可以正常工作: String.Replace("\\.","")


1

我相信你可以使用Unicode编码来实现这个,但我怀疑这不是你真正想要的。

==是Unicode值2A76,所以我认为你可以这样做:

char c = '\u2A76';

目前我无法测试,但我很想知道这对你有没有用。

你需要到处找找其他的。如果你想查看,这里有一个Unicode表:

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


3
U+2A76是“三个连续的等于号”,而不是两个(参见:http://www.fileformat.info/info/unicode/char/2a76)。它与在典型源文件中找到的字符序列“==”无关。 - Joe White

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接