【问题标题】:Why do I get an CS1056 Unexpected character '' on this code为什么我在此代码上得到一个 CS1056 Unexpected character ''
【发布时间】:2015-07-23 02:19:54
【问题描述】:

我收到了这个意外的字符 '' 错误,我不明白为什么。

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    根据错误内容和我在复制/粘贴后从在线编译器获得的实际错误代码,您在此行上的代码包含一个不可见但编译器正在尝试解释的字符。只需尝试擦除从右括号开始到数字 3 的每个字符,然后再次按 Enter 它应该可以工作(它确实对我有用)

    【讨论】:

    • 有趣。当我将其粘贴到 VS 中时,我的 VS/Resharper/其他东西删除了它。很好的收获。
    • @GrantWinney 一个“零宽度空间”-en.wikipedia.org/wiki/Zero-width_space 可以解释为什么如果它来自 interwebz,它最终会出现在代码中
    • @Daneau,感谢您的帮助。我重新输入了解决此错误消息的所有内容。可以因为忽略了如此简单的事情而自责,并一直认为语法一定有问题。 ;-)
    • 复制您的代码并将其粘贴到 MS Word 上。然后你会看到坏角色。
    【解决方案2】:

    我刚刚删除了位于我的临时文件夹C:\Users\MyUser\AppData\Local\Temp 中的文件Version=v4.0.AssemblyAttributes.cs(1,1,1,1),然后它就可以正常工作了。

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

    【讨论】:

    • 您需要删除与您的 .NET 版本匹配的文件,例如.NETFramework,Version=v4.5.1.AssemblyAttributes, .NETFramework,Version=v4.6.1.AssemblyAttributes
    • 刚遇到同样的问题。对我来说,要删除的文件在项目的obj 文件夹中
    【解决方案3】:

    正如Daneauaccepted answer 中提到的,问题出在IDE 中不可见的字符上。

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

    解决方案 1:显示符号

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

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

    解决方案 2:转换为 ANSI

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

    如果它不是非 ANSI 字符,这会将不可见字符转换为 ?

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

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

    这不会删除任何 ASCII 字符。

    注意:这可以删除有效的非 ASCII 字符(在字符串和 cmets 中),因此如果有的话,请尝试跳过这些字符。

    提示:使用 HEX-Editor 插件

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

    【讨论】:

    • 解决方案 2 为我修复了它。我怀疑这个问题是由于我在 Visual Studio Code 中执行的一些 git 操作而出现的。代码中有什么东西在闪烁,我不知道到底发生了什么,但我有一种唠叨的感觉,在我不知道到底发生了什么的情况下发生了一些变化。然后当我在浏览器中运行它时,就出现了这个错误。
    • Visual Studio 也有一个内置的十六进制编辑器。使用“打开方式...”(右键单击解决方案资源管理器中的文件;或从打开对话框 (Ctrl+O) 单击打开按钮上的小三角形),然后选择 二进制编辑器.
    【解决方案4】:

    只是报告我的直接经验。 正如 Daneau 所写,我有一个字符(ASCII DLE,我在弄乱斑马打印机时复制)隐藏在文本中。我负担不起重写所有内容,所以我使用了 notepad++“查看->显示符号->显示所有字符”功能。 我很抱歉没有评论 Daneau 条目,但我没有足够的声誉。

    【讨论】:

      【解决方案5】:

      重新编写代码,不要复制它。这对我有用

      【讨论】:

        【解决方案6】:

        到 C:\Users\UserName\AppData\Local\Temp\ 并清除数据或删除错误中指定的文件,即可解决问题。

        VS会自动添加需要的文件,不用担心。

        【讨论】:

          【解决方案7】:

          当我将应用程序从一个文件夹移动到另一个文件夹时出现此错误,我通过删除 obj 文件夹中的 Debug 文件夹解决了这个问题。

          【讨论】:

            【解决方案8】:

            这确实与复制粘贴代码和您看不到的字符有关。修复它的最简单方法是将复制粘贴的代码传递到便笺应用程序或简单的文本程序中,它将自动删除这些不可见字符。之后,只需从文本编辑器中复制代码并将其粘贴到您的 IDE 中。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-10-22
              • 2018-01-14
              • 2017-12-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多