Метод расширения является статическим и поэтому должен быть включен в состав статического, необобщенного класса. Тип первого параметра метода расширения определяет тип объектов, для которых этот метод может быть вызван. Кроме того, первый параметр может быть указан с модификаторомthis.Объект, для которого вызывается метод расширения, автоматически передается его первому параметру. Он не передается явным образом в списке аргументов. Следует, однако, иметь в виду, что метод расширения может по-прежнему вызываться для объекта аналогично методу экземпляра, несмотря на то, что он объявляется как статический.
Ниже приведена общая форма метода расширения.
static
Очевидно, что
В приведенном ниже примере программы создаются три простых метода расширения.
// Создать и использовать ряд методов расширения, using System;
using System.Globalization; static class MyExtMeths {
// Возвратить обратную величину числового значения типа double, public static double Reciprocal(this double v) { return 1.0 / v;
}
// Изменить на обратный регистр букв в символьной // строке и возвратить результат, public static string RevCase(this string str) { string temp =
foreach(char ch in str) {
if(Char.IsLower(ch)) temp += Char.ToUpper (ch, Culturelnfo.
CurrentCulture);
else temp += Char.ToLower(ch, Culturelnfo.CurrentCulture);
}
return temp;
}
// Возвратить абсолютное значение выражения n / d. public static double AbsDivideBy(this double n, double d) { return Math.Abs(n / d);
}
}
class ExtDemo {
static void Main {
double val = 8.0;
string str = "Alpha Beta Gamma";
// Вызвать метод расширения Reciprocal..
Console.WriteLine("Обратная величина {0} равна {1}", val, val.Reciprocal);
// Вызвать метод расширения RevCaseO .
Console.WriteLine(str + " после смены регистра: " + str.RevCase );
// Использовать метод расширения AbsDivideBy .
Console.WriteLine("Результат вызова метода val.AbsDivideBy(-2) : " + val.AbsDivideBy(-2));
}
}
Обратная величина 8 равна 0.125
Alpha Beta Gamma после смены регистра: aLPHA ЬЕТА дАММА Результат вызова метода val.AbsDivideBy(-2): 4