【问题标题】:C# quotes in interpolated string Unexpected character \0022插值字符串中的 C# 引号意外字符 \0022
【发布时间】:2017-03-28 19:03:39
【问题描述】:

我了解到您可以在插值字符串中使用表达式,但转义引号不起作用。

private string sth = $"{String.Join(\"\", Node.stringToType.Keys)}";


Error CS1056: Unexpected character `\0022' (CS1056)
Error CS1525: Unexpected symbol `)', expecting `${', `:', or `}' (CS1525) 

更新:

上面的内部表达式被修改为等价于

String.Join("", Node.stringToType.Keys)

(两个反斜杠用于转义两个双引号)这样您可以在其中插入任何分隔符。

【问题讨论】:

  • 你的第一个\是多余的
  • 这里真的需要字符串插值吗?
  • 是的,它是一个很长的正则表达式,我在其他任何地方都使用它,所以我猜String.Format 不适合

标签: c# c#-6.0 string-interpolation


【解决方案1】:

你应该把它写成

  private string sth = $"{String.Join("\\", Node.stringToType.Keys)}";

请注意{...} 中的文本应该是正确的 C# 代码

  String.Join("\\", Node.stringToType.Keys)

作为进一步的改进,您根本不需要字符串插值:

  private string sth = String.Join("\\", Node.stringToType.Keys);

【讨论】:

    【解决方案2】:

    改成这个

    private string sth = $"{String.Join("\\", Node.stringToType.Keys)}";
    

    这种方式也一定行得通

    private string sth = $"{String.Join(@"\", Node.stringToType.Keys)}";
    

    【讨论】:

    • 我实际上将 Join 中的第一个 arg 设置为空字符串(我将使用“|”)。奇怪的是你不需要转义它,@ 看起来像前面字符串的一部分。
    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    相关资源
    最近更新 更多