我试了很长时间想弄清楚发生了什么,但除了我之外,我在任何地方都没有发现任何人遇到过这个问题。
我只是想把一条路径硬编码成一个字符串。简单的东西。出于某种原因
string fullPathSourceFile = @"c:SQLSOURCE.txt";
正在评估c:\SQLSOURCE.txt
我已经试过了所有的方法来评估它为一个反斜杠,去掉双引号,但它不起作用。我甚至试过Replace(@"\", @"")
,它没有任何影响。有人知道我的代码在计算单个反斜杠时会强制使用双反斜杠吗?这让我抓狂,这太容易了,但也给我带来了很多挫折。
然后我使用下面的字符串变量:
using (StreamReader reader = new StreamReader(fullPathSourceFile))
{
string line;
while ((line = reader.ReadLine()) != null)
{
sqlDBsource = line.ToString();
}
reader.Close();
}
感谢大家的投入,帮助我找出了自己做错的地方。在Visual Studio中(这很令人困惑),当你在调试器中查看字符串的值时,它会为你插入转义符,因此在监视窗口或变量值弹出窗口中使用双反斜杠是正常的,并不意味着实际上有两个反斜杠。当您将鼠标悬停在变量上或在观察窗口中观察变量时,单击工具提示/窗格右侧的放大镜图标,这将向您显示未显示的字符串,该字符串将打印到控制台。另一种显示实际结果的方法是:控制台。WriteLine(_problem_string);我对代码的问题不在文章的范围内,但我从Visual Studio中看到的结果的混乱让我相信字符串是问题的根源,而事实并非如此。
这是一个奇怪的问题。所以我按照注释中的建议删除了逐字逐句,当我在字符串中使用双反斜杠时,它就起了作用。出于某种原因,代码不喜欢逐字逐句的字符串,并且错误地翻译了反斜杠。这解决了问题。如果有人遇到这种情况,您可能需要播放逐字/非逐字字符串,因为在某些情况下编译器更喜欢非逐字字符串。