|
|||||||
Методы расширения
Время создания: 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]. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|