为什么我在这段代码上得到一个CS1056意外字符''

Red*_*awk 18 c#

我得到了这个意想不到的字符''错误,我不明白为什么.

var list = new List<MyModel>();    
list.Add(new MyModel() {
    variable1 = 942,
    variable2 = 2001,
    variable3 = "my text",
    variable4   = 123
?}); // CS1056 Unexpected character ''  on this line
Run Code Online (Sandbox Code Playgroud)

小智 32

我刚刚删除了Version=v4.0.AssemblyAttributes.cs(1,1,1,1)我的临时文件夹中的文件C:\Users\MyUser\AppData\Local\Temp,然后它完美地工作.

对于.NET Core,您必须删除.NETCoreApp,Version=v2.1.AssemblyAttributes.cs

要删除的文件

  • 刚刚有同样的问题。对我来说,要删除的文件位于项目的“obj”文件夹中 (6认同)
  • 您需要删除与您的 .NET 版本匹配的文件,例如`.NETFramework,Version=v4.5.1.AssemblyAttributes`、`.NETFramework,Version=v4.6.1.AssemblyAttributes` (3认同)

Dan*_*eau 30

根据错误说明以及我在复制/粘贴后从Online编译器获得的实际错误代码,此行上的代码包含一个不可见的字符,但编译器正试图解释.只需尝试将从结束括号开始的每个字符擦除到您的数字3并再次按Enter它应该正常工作(它确实适用于我)

  • @GrantWinney一个“零宽度空间”-https://en.wikipedia.org/wiki/Zero-width_space可以解释为什么它来自interwebz并最终以代码结尾 (2认同)

Eli*_*ron 11

正如Daneau接受的答案中提到的,问题出在 IDE 中不可见的字符。

以下是使用Notepad++查找不可见字符的几种解决方案。

解决方案 1:显示符号

  • 将代码复制到 Notepad++,
  • 选择查看 -> 显示符号 -> 显示所有字符

这可以显示不可见的控制字符。

解决方案 2:转换为 ANSI

  • 将代码复制到 Notepad++,
  • 选择编码->转换为ANSI

这会将不可见字符转换?为非 ANSI 字符。

解决方案 3:删除无 ASCII 字符

  • 将代码复制到 Notepad++,
  • 打开查找窗口 (Ctrl+F)
  • 选择替换选项卡
  • 在“查找内容”中写: [^\x00-\x7F]
  • 将“替换为”留空
  • 在“搜索模式”中选择“正则表达式”
  • 查找并删除无 ASCII 字符

这将删除任何 ASCII 字符。

注意:这可以删除有效的非 ASCII 字符(在字符串和注释中),因此如果您有任何字符,请尝试跳过它们。

提示:使用 HEX-Editor 插件

使用 Notepad++ HEX-Editor 插件查看文本的二进制代码。任何超出 0x00 - 0x7F (0 - 127) 范围的字符都是非 ASCII 字符,并且可能是问题所在。