Методы расширения в C# позволяют добавлять новые методы к уже существующим типам без необходимости их изменения. Это удобно, когда доступ к исходному коду класса отсутствует или его нельзя модифицировать.
Особенности методов расширения
- Должны быть определены в статическом классе.
- Сам метод расширения должен быть статическим.
- Первый параметр метода определяет тип, который расширяется, и указывается с ключевым словом
this
. - Вызываются так же, как обычные методы экземпляра.
Пример использования
Расширение типа object
public static class ObjectExtensions
{
public static bool IsNull(this object obj)
{
return obj == null;
}
}
class Program
{
static void Main()
{
object value1 = null;
Console.WriteLine(value1.IsNull()); // true
object value2 = "";
Console.WriteLine(value2.IsNull()); // false
}
}
Расширение пользовательского класса
public class Person
{
public string Name { get; set; }
}
public static class PersonExtensions
{
public static void PrintName(this Person person)
{
Console.WriteLine($"Имя: {person.Name}");
}
}
class Program
{
static void Main()
{
var person = new Person { Name = "Алексей" };
person.PrintName(); // Имя: Алексей
}
}
Когда использовать методы расширения
- Для добавления функциональности к типам без изменения их исходного кода.
- Для упрощения работы с часто используемыми операциями.
- Для удобного написания методов, работающих с интерфейсами (например,
IEnumerable<T>
).
Методы расширения позволяют сделать код более читаемым и удобным, добавляя новые возможности к существующим типам без их модификации.