2009-07-31 35 views
4

这个问题在我脑中潜伏了一段时间。 Path.DirectorySeperatorChar的重要性是什么? 我的意思是我们不能只是放''' - 我认为这比调用属性 更快,特别是如果您在应用程序中构建大量路径时更是如此。 是否有原因?除了'\'以外,还有其他的文件夹/文件路径分隔符?也许在另一个操作系统?我们应该使用Path.DirectorySeperatorChar C#

回答

15

是的,使用该属性。这将更加面向未来。您将与Mono(Linux)兼容,但MS.NET也可能转向其他平台(如Compact和Micro Framework)。

但最好的方法是使用Path.Combine()Path.GetFileName()等,然后你将不需要分隔符字符。

+0

谢谢大家的兼容性问题。不知道 – LolaRun 2009-07-31 11:48:28

1

在linux上,分隔符是/。我们在那里有Mono。

3

使用Path.Combine()来组合路径。不幸的是,它的速度并不快,因为Path类的方法在string上运行,而不是特殊的结构(Path作为非静态类,也许?)。为什么这是你问的问题?这种宝石:

例外:
ArgumentExceptionPATH1PATH2包含在GetInvalidPathChars定义的无效字符的一个或多个。

+0

不!没问题,我只是要求性能优化。但你说过,'速度并不快。'问题是,理论上它比路径的正常字符串串联更快。 我的意思是,哪个更快? Path.Combine()或directory1 + Path.DirectorySeperatorChar + dir2。 – LolaRun 2009-07-31 11:47:35

1

Windows接受/用于路径分隔符不是吗?只要使用它即可兼容。但是,组合方法更适合使用。

0

使代码与其他平台兼容,如使用正斜杠作为路径分隔符的Unix。我相信Windows本身也有一些特殊的情况,例如设备驱动程序路径。

对Josh的回答作出澄清:Windows 一般接受正斜杠作为路径分隔符,但并非每个Windows应用程序都这样做,并且可能有一些Windows不兼容的地方。例如,在命令行上,正斜杠通常会引入一个参数。所以我不会个人依赖这个。

但是,我同意,在某些情况下,你想经常使用的东西是非常冗长的。在我自己的(Delphi)代码中,我曾经使用过一种方法“AddSlash”,它在正确的类型中添加了一个斜杠,如果需要的话。人们可以想象一个新的语言符号或字符常量,解码为平台的正确字符。

相关问题