Главная страница » C# » 34. Цепочки вызовов методов
Цепочки вызовов методов (Method Chaining) – это способ вызова нескольких методов подряд в одной строке. Такой стиль программирования делает код более читаемым и лаконичным.
📌 Пример:
string result = "hello"
.ToUpper()
.Replace("HELLO", "WORLD")
.Insert(0, "Say: ");
Console.WriteLine(result); // Выведет "Say: WORLD"
🔹 В этом примере вызовы ToUpper()
, Replace()
и Insert()
объединены в одну цепочку.
Метод A().B().C()
работает, если каждый метод возвращает объект, у которого можно вызвать следующий метод.
📌 Пример с StringBuilder
:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Привет");
sb.Append(", мир!").Replace("мир", "C#").Append(" :)");
Console.WriteLine(sb); // Выведет "Привет, C#! :)"
}
}
🔹 Append()
и Replace()
возвращают тот же объект StringBuilder
, что позволяет продолжать цепочку.
Чтобы реализовать method chaining в собственных классах, методы должны возвращать this
(текущий объект).
📌 Пример:
class Person
{
private string name;
private int age;
public Person SetName(string name)
{
this.name = name;
return this; // Возвращаем текущий объект
}
public Person SetAge(int age)
{
this.age = age;
return this;
}
public void PrintInfo()
{
Console.WriteLine($"Имя: {name}, Возраст: {age}");
}
}
class Program
{
static void Main()
{
Person person = new Person()
.SetName("Максим")
.SetAge(25);
person.PrintInfo(); // Выведет "Имя: Максим, Возраст: 25"
}
}
🔹 Методы SetName()
и SetAge()
возвращают this
, позволяя вызывать их в цепочке.
Цепочки вызовов широко применяются в LINQ.
📌 Пример:
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5 };
var result = numbers
.Where(n => n % 2 == 0) // Оставляем только четные
.Select(n => n * n) // Возводим в квадрат
.ToList(); // Преобразуем в список
Console.WriteLine(string.Join(", ", result)); // Выведет "4, 16"
}
}
🔹 Where()
фильтрует массив, Select()
изменяет значения, ToList()
создаёт список.
✅ Цепочки вызовов позволяют вызывать несколько методов в одной строке, улучшая читаемость кода.
✅ Работает, если методы возвращают объект, у которого можно вызвать следующий метод.
✅ Применяется в LINQ, StringBuilder
и при проектировании собственных классов.
🚀 Теперь вы умеете использовать method chaining в C#!
Car
с методами SetBrand(string)
, SetModel(string)
, SetYear(int)
, возвращающими this
.Main()
создайте объект Car
и установите параметры, используя цепочку вызовов.📌 Пример решения:
class Car
{
private string brand;
private string model;
private int year;
public Car SetBrand(string brand)
{
this.brand = brand;
return this;
}
public Car SetModel(string model)
{
this.model = model;
return this;
}
public Car SetYear(int year)
{
this.year = year;
return this;
}
public void PrintInfo()
{
Console.WriteLine($"Марка: {brand}, Модель: {model}, Год: {year}");
}
}
class Program
{
static void Main()
{
Car myCar = new Car()
.SetBrand("Toyota")
.SetModel("Camry")
.SetYear(2022);
myCar.PrintInfo(); // Выведет "Марка: Toyota, Модель: Camry, Год: 2022"
}
}
Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024-2025 Все права защищены. CodeFor.