插值字符串中的C#引号意外字符\ 0022

时间:2017-03-28 19:03:39

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

我已经读过你可以在插值字符串中使用表达式,但是转义引号不起作用。

public string InsertWithParams(string sql, List<string> colValue, List<string> cols, out string error)
{
     error = "";
     try
     {
         OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=)));User Id=;Password="); 
         OracleCommand command = new OracleCommand(sql, con);
         for (int i = 0; i < colValue.Count; i++)
         {
              command.Parameters.Add(new OracleParameter(cols[i], colValue[i]));
         }
         command.ExecuteNonQuery();
         command.Connection.Close();
    }
    catch (Exception ex)
    {
         error = ex.Message;
    }
    return null;
}

更新:

上面的内在表达方式相当于

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


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

(两个反斜杠用于转义两个双引号),就像你可以插入任何分隔符一样。

2 个答案:

答案 0 :(得分:1)

你应该把它作为

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

请注意,{...}中的文字应正确 C#代码

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

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

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

答案 1 :(得分:0)

将其更改为此

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

这种方式也必须有效

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