MyTetra Share
Делитесь знаниями!
Методы расширения
Время создания: 24.09.2019 20:48
Автор: ru.wikipedia.org
Текстовые метки: extension method, Методы расширения, c#, методы
Раздел: Компьютер - C#
Запись: Kozlov-AE/Tetra/master/base/1569347302wa7f05a1r0/text.html на raw.githubusercontent.com

Следующий пример показывает метод расширения, определённый для класса System.String (в языке C# имеет псевдоним string). Заметим, что он определён внутри невложенного и ненастраиваемого статичного класса[2]:

namespace ExtensionMethods

{

public static class MyExtensions

{

// метод WordCount принимает на вход строку, возвращает число слов, т.е. число подстрок, разделённых пробелом, точкой или вопросительным знаком.

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(); // i получит значение 3

int j = "Съешь же ещё этих мягких французских булок, да выпей чаю.".WordCount(); // j получит значение 10

В сравнении с обычным методом, метод расширения статичен, а первый параметр содержит после this целевой класс и переменную целевого класса, после чего могут следовать параметры метода[3].

В C# метод расширения имеет доступ только к публичным членам класса. Другим ограничением является то, что если есть и встроенный метод, и расширение, приоритет даётся встроенному методу[3].

Методы расширения широко используются в LINQ. Например, оператор Select является методом расширения интерфейса IEnumerable[4].

Так же в этом разделе:
 
MyTetra Share v.0.55
Яндекс индекс цитирования