45 lines
2.9 KiB
Markdown
45 lines
2.9 KiB
Markdown
---
|
||
title: Extension Mehods
|
||
localeTitle: Расширение 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();
|
||
```
|
||
|
||
#### Дополнительная информация:
|
||
|
||
[Практическое руководство. Внедрение и вызов настраиваемого метода расширения (Руководство по программированию на C #)](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-implement-and-call-a-custom-extension-method) |