6

当我想在我的字符串 switch case 语句中使用冒号“:”时,我收到错误“未终止的字符串文字”,我该如何解决这个问题,为什么会出现错误?

代码:

@switch (stringText)
{
    case "aaaa:ggg":
        Do something...
        break;
    case "bbbb:ggg":
        Do something else...
        break;
 }

如果通过这样做修复它但没有找到一个好的解决方案:

const string extra = ":ggg";
@switch (stringText)
{
    case "aaaa" + extra:
        Do something...
        break;
    case "bbbb" + extra:
        Do something else...
        break;
 }

编辑:使用 MVC Razor 语法

4

2 回答 2

4

如果您将值定义为实用程序类中的常量,然后在 switch 语句中引用这些常量而不是字符串文字,怎么样?

class Constants
{
     public const string Aaaa = "aaaa:gggg";
     public const string Bbbb = "bbbb:gggg";
}

...

@switch (stringText)
{
    case Constants.Aaaa:
        Do something...
        break;
    case Constants.Bbbb:
        Do something else...
        break;
 }
于 2013-01-14T13:05:29.013 回答
3

奇怪的错误。

这是另一种解决方法:如果您不想定义常量,则可以使用转义序列\x3A在字符串文字中获取冒号,这种方式不会干扰 razor 语法检查器。

在您的情况下,代码可能是:

@switch (stringText)
{
    case "aaaa\x3Aggg":
        Do something...
        break;
    case "bbbb\x3Aggg":
        Do something else...
        break;
}
于 2013-01-14T13:13:17.543 回答