2.9 KiB
title | localeTitle |
---|---|
Extension Mehods | Расширение Mehods |
Методы расширения
Методы расширения позволяют вам «добавлять» методы к существующим типам, не создавая новый производный тип, перекомпилировать или иным образом модифицировать исходный тип. Для кода клиента, написанного на C #, нет очевидной разницы между вызовом метода расширения и методами, которые фактически определены в типе.
Наиболее распространенными методами расширения являются стандартные операторы запроса LINQ, которые добавляют функциональность запроса к существующим System.Collections.IEnumerable и System.Collections.Generic.IEnumerable типы.
использование
Методы расширения определяются как статические методы, но вызываются с помощью синтаксиса метода экземпляра. Их первый параметр указывает, на какой тип работает метод, и этому параметру предшествует этот модификатор. Методы расширения доступны только в том случае, если вы явно импортируете пространство имен в исходный код с помощью директивы using .
пример
В следующем примере показан метод расширения, определенный для класса System.String .
namespace ExtensionMethods
{
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
}
Теперь вы можете привнести метод WordCount в область видимости с помощью директивы:
using ExtensionMethods;
И вы можете вызвать его из приложения, используя этот синтаксис:
string s = "Hello Extension Methods";
int i = s.WordCount();