這個問題在我腦中潛伏了一段時間。 Path.DirectorySeperatorChar的重要性是什麼? 我的意思是我們不能只是放''' - 我認爲這比調用屬性 更快,特別是如果您在應用程序中構建大量路徑時更是如此。 是否有原因?除了'\'以外,還有其他的文件夾/文件路徑分隔符?也許在另一個操作系統?我們應該使用Path.DirectorySeperatorChar C#
回答
是的,使用該屬性。這將更加面向未來。您將與Mono(Linux)兼容,但MS.NET也可能轉向其他平臺(如Compact和Micro Framework)。
但最好的方法是使用Path.Combine()
和Path.GetFileName()
等,然後你將不需要分隔符字符。
在linux上,分隔符是/。我們在那裏有Mono。
使用Path.Combine()
來組合路徑。不幸的是,它的速度並不快,因爲Path
類的方法在string
上運行,而不是特殊的結構(Path
作爲非靜態類,也許?)。爲什麼這是你問的問題?這種寶石:
例外:
ArgumentException
PATH1或PATH2包含在GetInvalidPathChars
定義的無效字符的一個或多個。
不!沒問題,我只是要求性能優化。但你說過,'速度並不快。'問題是,理論上它比路徑的正常字符串串聯更快。 我的意思是,哪個更快? Path.Combine()或directory1 + Path.DirectorySeperatorChar + dir2。 – LolaRun 2009-07-31 11:47:35
Windows接受/用於路徑分隔符不是嗎?只要使用它即可兼容。但是,組合方法更適合使用。
使代碼與其他平臺兼容,如使用正斜槓作爲路徑分隔符的Unix。我相信Windows本身也有一些特殊的情況,例如設備驅動程序路徑。
對Josh的回答作出澄清:Windows 一般接受正斜槓作爲路徑分隔符,但並非每個Windows應用程序都這樣做,並且可能有一些Windows不兼容的地方。例如,在命令行上,正斜槓通常會引入一個參數。所以我不會個人依賴這個。
但是,我同意,在某些情況下,你想經常使用的東西是非常冗長的。在我自己的(Delphi)代碼中,我曾經使用過一種方法「AddSlash」,它在正確的類型中添加了一個斜槓,如果需要的話。人們可以想象一個新的語言符號或字符常量,解碼爲平臺的正確字符。
- 1. 我們應該使用android
- 2. 當我們應該使用SignalR自己託管,當我們不應該?
- 3. 當我們應該使用pushScene和replaceScene?
- 4. 我們應該直接使用ScalaSignature嗎?
- 5. AS3類 - 我應該使用它們嗎?
- 6. 我們應該使用Twitter Bootstrap嗎?
- 7. 我們應該使用pg_send_query代替pg_query
- 8. 我們應該使用insertRow()和acceptChanges()嗎?
- 9. 我們應該避免使用LEFT JOIN
- 10. 我們應該使用jms嗎?
- 11. 我們應該使用<base href =「」/>?
- 12. 我們應該什麼時候在C#中使用事件
- 13. 在C++ 11中,我們應該何時明確使用std :: decay?
- 14. C#Lambda表達式:爲什麼我應該使用它們?
- 15. 我們應該如何改進我們對SVN的使用?
- 16. 當我們有UICollectionView時,我們應該使用UITableView嗎?
- 17. 我們什麼時候知道我們應該使用符號?
- 18. Zend_Db_Table_Abstract - 我們應該使用我們的表列名稱嗎?
- 19. 我們應該在我們的webapp上使用Pylons還是PHP?
- 20. 我們應該或不應該在模型中使用參數?
- 21. 如果我們不使用VS,我們應該使用MS Team Foundation Server嗎?
- 22. 當我們在asp.net中使用Gridview時,我們應該總是使用sqldatasource嗎?
- 23. 當我們應該用Objective-C方法使用「__attribute __((未使用))」時?
- 24. 我們應該使用CSS框架嗎?他們值得嗎?
- 25. 我們應該使用setTargetFragment()嗎?我認爲片段不應該彼此溝通
- 26. 我們應該創造它
- 27. 我們應該調試
- 28. 我們應該開源嗎?
- 29. 我應該多久使用一次C++?
- 30. 我們應該使用哪一種方法,用於存儲我們CoreData對象
謝謝大家的兼容性問題。不知道 – LolaRun 2009-07-31 11:48:28