Разница между методами расширения и методами в C # - PullRequest
4 голосов
/ 26 ноября 2010

В чем разница между Extension Methods и Methods в C #?

Ответы [ 3 ]

7 голосов
/ 26 ноября 2010

Я думаю, что вы действительно ищете разницу между Статическим и Экземплярным методами

В конце дня методы Extension - это замечательная магия компилятора и синтаксический сахар, которые позволяют вам вызывать метод Static, как если бы это был метод, определенный в этом конкретном экземпляре класса. Однако это НЕ метод экземпляра, поскольку экземпляр этого конкретного класса должен быть передан в функцию.

4 голосов
/ 26 ноября 2010

ExtensionMethods: Позволяет вам определить набор методов для класса без подкласса другого преимущества по сравнению с наследованием.

Методы: Они используются для реализации операции определения для класса.

См. Пример методов расширения

3 голосов
/ 26 ноября 2010

Одна действительно приятная особенность методов расширения заключается в том, что они могут вызываться для нулевых объектов, см. Это:

myclass x = null;
x.extension_method(); // this will work
x.method(); // this won't

Жаль, что, например, большинство методов string не являются методами расширения, в конце концов

x.ToLower();

должно вернуть ноль, если x равно нулю. Я имею в виду, это было бы полезно.

Когда мне нужна такая прозрачность, я предпочитаю писать методы расширения.

...