`EnumerationOptions` — это класс, предоставляемый в .NET Standard 2.1 и выше, который предлагает больше гибкости при работе с методами для перечисления файлов и директорий, такими как `Directory.GetFiles`, `Directory.EnumerateFiles` и другие. Этот класс позволяет установить несколько параметров для тонкой настройки процесса перечисления. ### Основные свойства: 1. **RecurseSubdirectories**: аналогично `SearchOption.AllDirectories`, управляет рекурсивным перечислением поддиректорий. 2. **MatchType**: тип сопоставления (обычно `Simple` или `Win32`). 3. **MatchCasing**: регистрозависимость при сопоставлении (обычно `CaseInsensitive` или `CaseSensitive`). 4. **BufferSize**: размер буфера для чтения каталогов. 5. **IgnoreInaccessible**: при значении `true` методы будут игнорировать недоступные директории, не вызывая исключения. 6. **ReturnSpecialDirectories**: возвращает или не возвращает специальные директории (например, `.` и `..` в Unix-системах). ### Пример использования: ```csharp var options = new EnumerationOptions { RecurseSubdirectories = true, // Рекурсивный обход MatchType = MatchType.Simple, // Простое сопоставление BufferSize = 4096, // Размер буфера в байтах IgnoreInaccessible = true // Игнорировать недоступные директории }; var files = Directory.GetFiles("/path/to/directory", "*.txt", options); ``` ### Производительность: - **RecurseSubdirectories**: Как и в случае с `SearchOption`, рекурсивный обход может быть медленнее и требовать больше ресурсов. - **BufferSize**: Увеличение размера буфера может улучшить производительность за счет уменьшения числа обращений к файловой системе, но это потребует больше памяти. - **IgnoreInaccessible**: Может улучшить производительность, избегая лишних исключений и проверок доступа. В целом, `EnumerationOptions` предоставляет более гибкие средства для оптимизации производительности, чем простое использование `SearchOption`. Вы можете тонко настроить параметры, чтобы они соответствовали конкретным требованиям вашего приложения.