Beim Schreiben von Dateipfaden in C# habe ich festgestellt, dass ich entweder "C: \" oder "C: /" schreiben kann und den gleichen Pfad bekomme. Welcher wird empfohlen? Ich habe irgendwo gehört, dass die Verwendung eines einzelnen/mehr empfohlen wurde als die Verwendung von \ (mit \ als Escape-Sequenz).Verwenden von/oder \ für Ordnerpfade in C#
Antwort
Windows unterstützt beide Pfadtrennzeichen, also funktionieren beide, zumindest für lokale Pfade (/ funktioniert nicht für Netzwerkpfade). Die Sache ist die, dass es kein tatsächlicher Nutzen ist die Arbeitsweise verwenden, aber nicht Standard Pfadseparator (/) unter Windows, vor allem, weil Sie wörtliche die wörtlich Zeichenfolge verwenden:
string path = @"C:\" //Look ma, no escape
Der einzige Fall, in dem ich einen Nutzen sehen konnte Wenn Sie mit dem/separator arbeiten, arbeiten Sie nur mit relativen Pfaden und verwenden den Code in Windows und Linux. Dann können Sie "../foo/bar/baz" auf das gleiche Verzeichnis zeigen. Aber selbst in diesem Fall ist es besser, den Namespace System.IO (Path.DirectorySeparatorChar, Path.Combine) zu belassen, um solche Probleme zu beheben.
Was Sie "Raw-String-Operator" nennen, ist wirklich "wörtlich String-Literal". –
Danke für die Antwort! – DMan
@Jay: "Verbatim String-Literal-Operator"? oder einfach "Verbatim String Literal"? –
Ich schreibe Pfade in C# wie folgt aus:
@ "C: \ My \ Path"
Das Zeichen @ dreht \ Flucht aus.
Dies ist kein C# -Problem - es ist ein Windows-Problem. Pfade in Windows werden normalerweise mit einem Backslash angezeigt: C :. Meiner Meinung nach sollte das in C# verwendet werden. Verwenden Sie @ "C: \", um eine spezielle Behandlung von Backslaash-Zeichen zu verhindern.
Verwenden Sie Path.Combine
und Sie brauchen sich keine Sorgen über solche Semantik zu machen.
Es ist schade, dass Path.Combine nur 2 Parameter dauert. –
@MikeCole seit .NET 4.0, eine Überladung nimmt eine beliebige Anzahl von Parametern über 'Params' Schlüsselwort. – nawfal
Bitte verwenden Sie Path.DirectorySeparatorChar ODER besser, wie Poita schlug vor, Verwendung Path.Combine.
'Path.PathSeparator' ist ein Zeichen zum Aufteilen von Pfaden in der PATH-Umgebungsvariablen. Unter Windows ist es ';'. Ich habe diese Antwort aktualisiert, um auf 'DirectorySeparatorChar' zu verweisen. –
Hoppla. Danke für die Korrektur, ich wollte über DirectorySeparatorChar posten. – SolutionYogi
Dies ist die richtige Lösung. –
- 1. .htaccess 2 Ordnerpfade zu verstecken
- 2. Google Drive API - Ordnerpfade abrufen
- 3. Auswählen mehrerer Ordnerpfade mit dem FolderBrowserDialog-Steuerelement in VB.NET
- 4. Verwenden Sie Ausnahme für Typenkonflikt in C#
- 5. Wie für jede Schleife in C++ verwenden
- 6. Maven für C/C++ Projekte verwenden
- 7. Visual C++ für C++ anstelle von C++/CLI verwenden
- 8. Verwenden von Google Mock für C-Code
- 9. wie C++ ungeordnetes_set für Klasse zu verwenden?
- 10. C# Flexible/Dynamisch weiter verwenden für
- 11. C# eine TextBox für mehrere Elemente verwenden
- 12. Verwenden von MSBuild für C++ mit VS2005
- 13. Verwenden Sie C-Definitionen in Objective-C
- 14. C#: Conditional-Attribut für Tests verwenden
- 15. Verwenden Oledb Verbindungszeichenfolge für Localhost C#
- 16. Auswahl für mehrere Socket-Verbindungen verwenden C
- 17. Wann sollte ich LINQ für C# verwenden?
- 18. Verwenden eines Timers in C#
- 19. Verwenden von Argv in C?
- 20. Verwenden von Merkmalen in C++
- 21. Verwenden C Struct in Objective C
- 22. Wann extern C in C++ zu verwenden?
- 23. Verwenden Sie für die Schleife mit UIAnimation in Objective C
- 24. Wie foreach-Schlüsselwort für benutzerdefinierte Objekte in C verwenden können #
- 25. Verwenden kovariante CV-Qualifikationsmerkmale für primitive Typen in C++?
- 26. Warum öffentliche Eigenschaften für private Felder in C# verwenden?
- 27. Wie verwenden Sie XMLSerialize für Enum typisierte Eigenschaften in C#?
- 28. Verwenden von C++ für Back-End-Berechnungen in einer Webanwendung
- 29. Warum kann ich in C# Operatoren für Generika verwenden?
- 30. C verwenden (++) in einer golang Anwendung für Performance
Vielen Dank an John Saunders für den Hinweis, dass dies ein Windows-Problem ist. Ich habe gehört/ist besser für Cross-Kompatibilität, die hier nicht so wichtig ist, da ich auf Windows ausgerichtet bin. – DMan
Fehler im Titel: sollte "/ oder \\" sein, nicht "// oder". – sblom
@ sblom- Nicht sicher der genaue Unterschied, aber behoben, da es funktioniert: p – DMan