2009-08-20 5 views
2

Члены класса Path, такие как Path.Combine, являются незаменимыми. Они приводят к большому, чистому, правильному коду. К сожалению, если вы используете его для управления заголовками в препроцессоре C++, вы быстро поймете, что он появляется больше, чем ожидалось в профилировщике. Зачем?Должен ли `System.IO.Path` быть конкретным?

Исключения: ArgumentException: path1 или path2 содержат один или несколько недопустимых символов, определенных в GetInvalidPathChars.

Даже без проверки команда комбайна O (n) (поскольку она должна копировать содержимое строки). Однако это намного дешевле, чем проверка наличия любого из GetInvalidPathChars '~ 40 членов.

Я считаю, что класс Path должен быть неизменным типом, который содержит строку, которая, как известно, не содержит никаких недопустимых символов. Статические элементы должны быть предусмотрены для работы на string (как существует сейчас) и идентичный набор, добавленный для работы на объектах Path. Внесение этого изменения в .NET Framework:

  • не является критическим изменением (изменение статического класса в герметичном конкретный тип неразрывный)
  • значительно повышает производительность операций несколько передовых методов

Мнения?

ответ

2

Класс Uri может обеспечить такую ​​функциональность, если вы не против файла: // синтаксиса. Я думаю, что .Net предпочитает использовать класс Uri в любом случае, поскольку это может позволить находить ресурсы, отличные от локальных файлов, хотя для этого требуется дополнительная работа со стороны программы.

Смежные вопросы