잠시 동안 내 머리에 숨어있는 질문입니다. Path.DirectorySeperatorChar의 중요성은 무엇입니까? 우리는 '\'대신에 '\'를 넣을 수 없다는 것을 의미합니다. 특히 응용 프로그램에서 많은 수의 경로를 구성하는 경우 속성을 호출하는 것보다 빠르다는 것이 더 ? 이유가 있을까요? '\'이외의 다른 폴더/파일 경로 분리 문자가있을 수 있습니까? 어쩌면 다른 운영 체제에서?Path.DirectorySeperatorChar를 사용해야합니까? C#
답변
예, 해당 속성을 사용하십시오. 미래 지향적 일 것입니다. Mono (Linux)와 호환되지만 MS.NET은 Compact 및 Micro Framework와 같은 다른 플랫폼으로 이동할 수도 있습니다.
그러나 가장 좋은 방법은 Path.Combine()
및 Path.GetFileName()
외에도 사용하는 것이므로 구분 기호 char이 필요하지 않습니다.
Linux의 경우 구분 기호는 /입니다. 그리고 우리는 거기에 모노가 있습니다.
경로 결합을 위해 Path.Combine()
을 사용하십시오. 불행하게도, Path
클래스의 메소드가 특수 구조체 (Path
이 아닌 정적 클래스 일까?) 대신 string
에서 작동하기 때문에 가능한 빠를 수 없습니다. 왜 이것이 당신이 묻는 문제입니까? 이 보석 :
예외 :
ArgumentException
경로 1 또는이GetInvalidPathChars
에 정의 된 잘못된 문자 중 하나 이상을 포함 경로 2.
아니요! 문제는 없지만 성능 최적화를 요구하고 있습니다. 그러나 당신은 '그것이 가능한 한 빨리'는 아니라고 말했습니다. 문제는 경로의 일반적인 문자열 연결보다 이론적으로 빠릅니까? 더 빠릅니다. Path.Combine() 또는 directory1 + Path.DirectorySeperatorChar + dir2입니다. – LolaRun
'path.Combine()'은'directory1'의 끝에 그리고/또는'directory2'의 시작 부분에 구분 기호가 존재하지 않으면 복사하지 않습니다. 즉, GUI 스레드에서 수천 번 작업을 수행해야하는 경우 옵션을 수동으로 구현하는 것이 훨씬 빠르고 빨라집니다.아마도 백그라운드 프로세스/도구에 대해서는 문제가되지 않을 것이고 "적은 수"의 작업 (수백 이하)에 대해서는 분명하지 않을 것입니다. –
Windows는 /를 경로 구분 기호로 사용할 수 있습니까? 호환되도록 사용하십시오. 그러나 combine 메서드를 사용하는 것이 좋습니다.
경로 구분 기호에 슬래시를 사용하는 Unix와 같은 다른 플랫폼과 호환되도록 코드를 작성하십시오. 필자는 장치 드라이버 경로와 같이 Windows 자체에 특수한 경우도 있다고 생각합니다.
조쉬의 대답에 대한 설명 : Windows 일반적으로은 경로 구분 기호에 슬래시를 사용할 수 있지만 모든 Windows 응용 프로그램에서 슬래시를 허용하지는 않으며 Windows에서 제공하지 않는 곳이있을 수 있습니다. 예를 들어 명령 행에서 슬래시는 일반적으로 매개 변수를 도입합니다. 그래서 나는 이것에 개인적으로 의지하지 않을 것입니다.
그러나 일부 상황에서 자주 사용하려는 것에 대해서는 매우 장황합니다. 내 자신의 (델파이) 코드에서는 필요한 경우 적절한 종류의 슬래시를 추가하는 "AddSlash"메서드를 사용했습니다. 플랫폼의 올바른 문자로 디코딩 된 새로운 언어 기호 또는 문자 상수를 상상할 수 있습니다.
- 1. C++/CLI : 왜 사용해야합니까?
- 2. C#/.Net 또는 C++과 함께 사용해야합니까?
- 3. 어떤 플랫폼을 사용해야합니까? 네이티브 C++ 또는 C#?
- 4. C# 람다 식 : 왜 사용해야합니까?
- 5. 내 C++ 게임에서 XML을 사용해야합니까?
- 6. 이 경우 C++ 템플릿을 사용해야합니까?
- 7. C# 웹 사이트에서 IIS를 사용해야합니까?
- 8. 어떤 C# 데이터 구조를 사용해야합니까?
- 9. C++ 스레드에서 정수로 잠금을 사용해야합니까?
- 10. 목표 -C. 하위 클래스를 사용해야합니까, 아니면 프로토콜을 사용해야합니까?
- 11. C (99) 불리언을 사용해야합니까? (또한 C + +에서 C + + 불리언?)
- 12. 간단한 콘솔 앱에 C# 네임 스페이스를 사용해야합니까?
- 13. BOOL과 bool은 언제 C++에서 사용해야합니까?
- 14. Java/C#에서 국제 식별자를 사용해야합니까?
- 15. 어떤 상황에서 C#의 이벤트를 사용해야합니까?
- 16. C# Generics/Design Patterns : 템플릿 메서드를 사용해야합니까?
- 17. 언제 C#에서 extern alias 키워드를 사용해야합니까?
- 18. C enum의 이진 표현에 어떤 형식을 사용해야합니까?
- 19. C : 라이브러리의 추적/진단 메시지에는 무엇을 사용해야합니까?
- 20. C# List는 언제 사용해야하며 언제 arraylist를 사용해야합니까?
- 21. 데몬 프로세스에 C++이나 스크립트를 사용해야합니까?
- 22. C#의 잠금 및 뮤텍스를 함께 사용해야합니까?
- 23. MySql.Data C# .net 라이브러리에서 어떤 런타임을 사용해야합니까?
- 24. C++ : 일반적으로 문자열이나 char 배열을 사용해야합니까?
- 25. MS Visual C++ : 호출 규칙을 언제 사용해야합니까?
- 26. C++ : cin.ignore를 사용하기 전에 cin.get()을 사용해야합니까?
- 27. 기본 C 숫자 유형 대신 NSNumber를 사용해야합니까?
- 28. C++에서는 거의 항상 가상 상속을 사용해야합니까?
- 29. C++ 로거 - 일반 xml 파서를 사용해야합니까?
- 30. C# 설정 파일 : 왜 Settings.Default를 사용해야합니까?
호환성 문제가 많습니다. 몰랐는데 – LolaRun