C# 为什么这个代码有效?这些引用不';我不明白。

C# 为什么这个代码有效?这些引用不';我不明白。,c#,cmd,command,C#,Cmd,Command,如果我删除第一行中的第二个引号,它将不起作用 string command = "/C \"rmdir /q /s \\\\"+ hostname + "\\c$\\Users\\" + user; var psi = new System.Diagnostics.ProcessStartInfo("cmd.exe") { Arguments = command, UseShell

如果我删除第一行中的第二个引号,它将不起作用

  string command = "/C \"rmdir /q /s \\\\"+ hostname + "\\c$\\Users\\" + user;
            var psi = new System.Diagnostics.ProcessStartInfo("cmd.exe")
            {
                Arguments = command,
                UseShellExecute = false,
                CreateNoWindow = true
            };

            using (var process = System.Diagnostics.Process.Start(psi))
            {
                process.WaitForExit();
            }

将斜杠放在字符前表示应以文字形式解释以下字符,而不是作为编译器符号。所以

\\
变成\和\“变成”。斜杠字符串在字符串中加引号。命令字符串有效地设置为(这是打印(命令)的外观:

/C "rmdir /q /s \\hostname\c$\Users\user
假设hostname=“hostname”和user=“user”

这段代码的奇怪之处在于字符串中没有第二个结束引号

我希望它应该更像:

string command = "/C \"rmdir /q /s \\\\"+ hostname + "\\c$\\Users\\\"" + user;
这将添加一个结束引号。如果要删除rmdir之前的引号,还需要删除斜杠


请参见

删除引号和斜杠。这样更容易阅读,谢谢!但我仍然不明白第一种方法为什么有效。@JhonSimpson因为它不是代码中的引号,而是字符串中的引号…看看如果在我的回答中的块中打印字符串会发生什么好,不要删除它then@MickyD,请看答案看看你的评论是否合适anywhere@Saurabh如果你太傻了,以至于在一篇显然写得不好的帖子上发现了一个友好的嘲讽(在写这篇文章时,一篇有3票反对的帖子)那么你应该读一读。@MickyD亲爱的,非常感谢你,我已经读了很多遍了,它没有说任何地方可以盲目遵守规则。