4

我已经尝试了很长时间来弄清楚发生了什么,但是除了我之外,我还没有发现任何其他人遇到过这个问题。

我只是想将路径硬编码为字符串。容易的东西。好吧,出于某种原因

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(令人困惑)中,当您在调试器中查看字符串的值时,它会为您添加转义符,因此监视窗口或变量值弹出窗口中的双反斜杠是正常的,并不意味着实际上存在两个反斜杠。当您将鼠标悬停在变量上或在观察窗口中观察它时,单击工具提示/窗格右侧的放大镜图标,这将显示未转义的字符串将打印到控制台。另一种显示实际结果的方法是: Console.WriteLine(the_problem_string); 我遇到的代码问题超出了帖子的范围,但我从 Visual Studio 看到的结果令人困惑,让我相信字符串是问题的根源

4

1 回答 1

3

这是一件很奇怪的事。所以我按照评论中的建议删除了逐字记录,当我在字符串中使用双反斜杠时它起作用了。由于某种原因,代码不喜欢逐字字符串,并且错误地翻译了反斜​​杠。这解决了这个问题。如果有人遇到这种情况,您可能需要使用逐字/非逐字字符串,因为在某些情况下编译器更喜欢非逐字。

于 2015-09-16T14:55:38.053 回答