这个问题在我脑中潜伏了一段时间。 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