私の頭にはしばらくの間疑問が残っています。 Path.DirectorySeperatorCharの重要性は何ですか? 私はただ代わりに '\'を置くことはできません - あなたがアプリケーションで膨大な数のパスを構築している場合は特に、プロパティを呼び出すよりも速いと思います。 ? 理由はありますか? '\'以外のフォルダ/ファイルパスの分離のために別のCharが存在する可能性がありますか?多分別のオペレーティングシステムで?Path.DirectorySeperatorCharを使用する必要があります。C#
答えて
はい、このプロパティを使用してください。それはより将来的なものになるだろう。 Mono(Linux)と互換性がありますが、MS.NETは他のプラットフォーム(CompactやMicro Frameworkなど)にも移行する可能性があります。
しかし、最も良い方法は、Path.Combine()
とPath.GetFileName()
などを使用することです。その後、セパレータcharはまったく必要ありません。
Linuxでは、区切り記号は/です。私たちはそこにモノを持っています。
パスを結合するためにPath.Combine()
を使用してください。残念ながら、Path
クラスのメソッドは特別な構造体(Path
はおそらく?ではなく)の代わりにstring
で動作するので、できるだけ速くはありません。これはなぜあなたが求める問題ですか?この宝石:
例外:
ArgumentException
パス1またはパス2はGetInvalidPathChars
で定義された無効な文字の一つ以上を含んでいます。
いいえ!問題はありません、私はパフォーマンスの最適化を求めています。 しかしあなたは言った、「それはできるほど速くはありません。問題は、パスの通常の文字列連結よりも理論的に速いかどうかです。 つまり、どちらが速いのですか? Path.Combine()またはdirectory1 + Path.DirectorySeperatorChar + dir2。 – LolaRun
'path.Combine()'は 'directory1'の終わりおよび/または' directory2'の始まりに存在するセパレータを複製しません。つまり、GUIスレッドで何千回も操作を実行する必要がある場合、オプションの手動実装は大幅に/測定可能に高速になります。おそらく、バックグラウンドのプロセスやツールでは問題になることはないでしょうし、確かに「数が少ない」操作(数百以下)ではないでしょう。 –
Windowsは/をパス区切りに使用できますか?互換性を持たせるためにそれを使用してください。ただし、combineメソッドを使用する方が適しています。
コードを、パス区切りにスラッシュを使用するUnixなどの他のプラットフォームと互換にする。私は、デバイスドライバのパスなど、Windows自体に特別なコーナーケースがいくつかあると考えています。
Windowsの一般的には、パス区切り文字にスラッシュを使用できますが、すべてのWindowsアプリケーションで使用できるわけではありません。たとえば、コマンドラインでスラッシュは通常、パラメータを導入します。だから私は個人的にこれに頼っていません。
しかし、状況によっては頻繁に使用したいことについては非常に冗長であることに同意します。私自身の(Delphi)コードでは、必要に応じて適切な種類のスラッシュを追加するメソッド "AddSlash"を使用しました。プラットフォームの正しい文字にデコードされた新しい言語シンボルまたは文字定数を想像することができます。
- 1. C++を使用してプロセスメモリを取得する必要があります
- 2. @synthesizeをまだ使用する必要がありますか?
- 3. ヘルパーメソッドはC#で静的クラスを使用する必要があります
- 4. C#のロックとミューテックスを一緒に使用する必要があります
- 5. 32/64ビットQT C++プログラムでボリュームシャドウコピーサービスを使用する必要があります
- 6. C#設定ファイル:なぜSettings.Defaultを使用する必要がありますか?
- 7. C#Webサイト、私はIISを使用する必要がありますか?
- 8. Application.LoadLevelがSceneManager.LoadSceneを使用する必要がありません。
- 9. HTML5構文を使用する必要がありますか?
- 10. DreamweaverのSpryを使用する必要がありますか?
- 11. NTLMでメンバシップサービスを使用する必要があります
- 12. JavaScriptで「プロトタイプ」を使用する必要があります
- 13. RecyclerViewでCursorLoaderを使用する必要がありますか?
- 14. DynamoDBでEC2を使用する必要がありますか?
- 15. オンラインゲームにTCPを使用する必要がありますか?
- 16. Rails 3.1:CoffeeScriptを使用する必要がありますか?
- 17. MVVMにDataTemplatesを使用する必要がありますか?
- 18. OpenCVでワイヤレスカメラを使用する必要があります
- 19. addTestDeviceを使用する必要がありますか?
- 20. なぜvalue.lengthを使用する必要がありますか?
- 21. モデルレイヤー(MVP)でアクティビティーリファレンスを使用する必要があります
- 22. Parcel.writeSerializableをParcelable.writeToParcelで使用する必要がありますか?
- 23. フォントでwebpackを使用する必要がありますか?
- 24. /csv:WriteAll()でError()を使用する必要がありますか?
- 25. 私はsingletableviewを使用する必要がありますか?
- 26. どのレイアウトマネージャを使用する必要がありますか?
- 27. 「ベース」を使用する必要があります。接頭
- 28. ユニットテストでAutoMapperを使用する必要がありますか?
- 29. mysql_close(接続)を使用する必要がありますか?
- 30. インテントサービスを使用する必要がありますか?
互換性に関する問題はたくさんあります。それを知らなかった – LolaRun