2.9 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, localeTitle
| 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();