Windowspath中的多个反斜杠有什么后果?

在我的程序中,我经常有在我的app.config文件中configuration的文件名和/或path。 这通常会是这样的:

<add key="LogFileDirectory" value="C:\Logs" /> <add key="SaveLogFileTo" value="MyLogFile.txt" /> 

在我的实际应用程序代码中,我经常将这些代码连接在一起,代码如下所示:

 var logFile = ConfigurationManager.AppSettings["LogFileDirectory"] + @"\" + ConfigurationManager.AppSettings["SaveLogFileTo"]; 

现在,以上代码的结果会给出一个日志文件pathC:\Logs\MyLogFile.txt ,但是,如果最终用户将configuration文件中的日志文件目录指定为C:\Logs\并带有尾部反斜杠,我的代码导致C:\Logs\\MyLogFile.txt的实际path在目录和文件之间具有双反斜线。

根据我的经验,这在实践中运行良好。 事实上,即使在命令提示符下执行cd c:\\\\\\windows\\\可以在实践中使用。

我的问题是,如果有这样的path会有什么结果呢? 我不希望在生产代码中使用这个“特性”,如果这些特性是无证的,并且在未来某个时候会被新的Windows版本打破。

Solutions Collecting From Web of "Windowspath中的多个反斜杠有什么后果?"

没有我知道的后果,在将来的版本中不会被打破,因为很多人会和你一样。

但是,在C#中合并路径的正确方法是使用Path.Combine ,它将为您删除任何额外的反斜杠:

 var logFile = Path.Combine( ConfigurationManager.AppSettings["LogFileDirectory"], ConfigurationManager.AppSettings["SaveLogFileTo"]);