2009-07-31 31 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」,它在正確的類型中添加了一個斜槓,如果需要的話。人們可以想象一個新的語言符號或字符常量,解碼爲平臺的正確字符。

相關問題