use*_*495 3 c# compiler-errors string-interpolation visual-studio razor
我不明白为什么在 .cshtml/Razor 页面中输入时不会编译:
@($"{"\""}") // <-- does not work
@($"{"'"}") // <-- does not work
@($"{"a"}") // <-- works
Run Code Online (Sandbox Code Playgroud)
错误指出:
RZ1000:未终止的字符串文字。以引号 (") 开头的字符串必须在行结束之前终止。但是,以 @ 和引号 (@") 开头的字符串可以跨越多行。
CS1002:;预期的
CS1513: } 预期
看来非引号字符工作正常,但双引号或单引号字符会破坏 Razor 解析内插字符串的能力,即使引号字符已转义也是如此。
所有示例在普通 .cs 文件中都可以正常工作:
public sealed class Test
{
public string x = $"{"\""}";
public string y = $"{"'"}";
public string z = $"{"a"}";
}
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
我的环境如下:
.NET SDK:v7.0.102
.NET运行时:v7.0.2
C#:v11(预览)
Visual Studio 社区 2022(64 位):v17.4.4
这是一个错误,.NET 人员至少早在 2015 年就已经知道了。
然而,dotnet/aspnetcore github 页面上的 dotnet 工程师认为修复该问题所需的工作超过了带来的好处:
2015 年 6 月 3 日
进一步调查此问题后发现,完成此任务的要求相当高(需要在 Tokenizer 级别接近完整地了解 C#)。稍后会再回顾这一点。
10周零2天后...
2015 年 8 月 14 日
转向待办事项是因为我们认为这些情况在 MVC 视图中并不常见,并且有一些简单的解决方法(例如使用 string.Format() 而不是字符串插值)。
https://github.com/dotnet/aspnetcore/issues/4976
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |