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;
 }

編集:MVCRazor構文が使用されます

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 に答える