`SearchOption` — это перечисление (enum), используемое в методах класса `Directory` в .NET, таких как `Directory.GetFiles`, `Directory.GetDirectories` и других.
Оно определяет, следует ли выполнять поиск только в текущей директории или же во всех поддиректориях рекурсивно.
Вот два основных значения этого перечисления:
1. **TopDirectoryOnly**: Поиск будет выполняться только в указанной директории. Поддиректории не будут учтены.
2. **AllDirectories**: Поиск будет выполнен в указанной директории и во всех её поддиректориях рекурсивно.
### Пример:
```csharp
// Поиск только в текущей директории
string[] files1 = Directory.GetFiles("/path/to/directory", "*.txt", SearchOption.TopDirectoryOnly);
// Поиск в текущей директории и всех поддиректориях
string[] files2 = Directory.GetFiles("/path/to/directory", "*.txt", SearchOption.AllDirectories);
```
### Производительность:
- **TopDirectoryOnly**: Быстрее, так как обходит только одну директорию. Оптимально, если вам известно, что нужные файлы находятся именно в этой директории.
- **AllDirectories**: Может быть значительно медленнее, особенно если у вас есть глубокая иерархия директорий или большое количество файлов. Рекурсивный обход может привести к большему времени выполнения и большему использованию ресурсов.
Используйте `AllDirectories` только если действительно необходимо искать файлы во всех поддиректориях. Если вы знаете структуру директорий или ищете файлы только в одной конкретной директории, использование `TopDirectoryOnly` будет более производительным.