Метод `IndexOf` используется для поиска индекса первого вхождения указанного символа или подстроки в строке. Возвращается индекс первого вхождения или -1, если символ или подстрока не найдены.
Пример:
```csharp
string текст = "Привет, мир!";
int индекс = текст.IndexOf('м');
// индекс будет равен 8
```
Метод имеет несколько перегрузок, которые позволяют указывать начальный индекс для поиска, количество символов для поиска и параметры сравнения.
Вот сигнатуры некоторых перегрузок метода `IndexOf` для класса `string` в C#:
1. `public int IndexOf(char value)`
2. `public int IndexOf(char value, int startIndex)`
3. `public int IndexOf(char value, int startIndex, int count)`
4. `public int IndexOf(string value)`
5. `public int IndexOf(string value, int startIndex)`
6. `public int IndexOf(string value, int startIndex, int count)`
7. `public int IndexOf(string value, StringComparison comparisonType)`
8. `public int IndexOf(string value, int startIndex, StringComparison comparisonType)`
9. `public int IndexOf(string value, int startIndex, int count, StringComparison comparisonType)`
Дальше разберем некоторые перегрузки.
### Поиск индекса по подстроке
```csharp
public int IndexOf(string value)
```
Метод `IndexOf` ищет первое вхождение подстроки в основной строке и возвращает индекс первого символа первого вхождения подстроки. Если подстрока не найдена, метод возвращает `-1`.
Пример:
```csharp
string text = "Привет, мир! Привет, всем!";
string substring = "Привет";
int position = text.IndexOf(substring);
Console.WriteLine("Позиция подстроки: " + position);
```
В предложенном примере переменная `position` будет равна `0`, так как подстрока "Привет" начинается с самого начала строки `mainString`. Если подстрока не была найдена, `position` была бы равна `-1`.
### По подстроке с определённого индекса
```csharp
public int IndexOf(string value, int startIndex)
```
Пример:
```csharp
string text = "Привет, мир! Привет, всем!";
// Начнем поиск с 10-го символа
int position = text.IndexOf("Привет", 10);
Console.WriteLine("Позиция подстроки: " + position);
```
В данном случае, первое вхождение слова "Привет" будет проигнорировано, и метод `IndexOf` найдёт второе вхождение, начиная с 10-го символа. В переменной `position` будет храниться индекс начала второго вхождения подстроки "Привет".