2009-08-24 2 views
5

Мой учитель попросил нас изучить, что такое класс расширения, но я не могу найти что-либо в MSDN или Google. Любая помощь?Что такое расширение класса?

+0

Вы имеете в виду методы расширения? Не считайте, что классы расширения существуют в C#, если вы не ссылаетесь на производные классы? – James

+1

Вы уверены, что это был «класс расширения», а не «метод расширения»? –

ответ

17

В формальной терминологии C# не существует понятия «класс расширения». Это может означать класс, определяющий extension methods (который не является чем-то особенным, это просто класс static.)

+0

У меня тоже были сомнения по поводу вопроса. Хорошо, хорошо знать. Спасибо! :) –

2

Класс, который имеет extension methods.

Методы расширения позволяют «добавлять» методы к существующим типам без создания нового производного типа, перекомпиляции или иным образом изменяющее исходного типа. Методы расширения представляют собой особый вид статического метода, , но они называются так, как если бы они были методы экземпляра расширенного типа. Для кода клиента, написанного на C# и Visual Basic, нет явного различия между вызовом метода расширения и методов, которые фактически определены в типе.

2

технически «класс расширения» нет ничего. В народном языке он может быть использован кем-то для обозначения класса, предназначенного для хранения extension methods. Методы расширения - это методы, используемые для того, чтобы выглядеть как методы экземпляра класса, но которые являются действительно статическими методами в статическом классе, которые предоставляются для улучшения и инкапсуляции определенных функций. Они особенно полезны, когда вы пытаетесь расширить определенные функции по типу, который невозможно изменить напрямую и добавить метод. Кроме того, они часто используются с универсальными типами (особенно в рамках .net 3.5) для расширения функциональности с использованием методов, предоставляемых определенным интерфейсом.

0

класса расширения в C# может быть просто дочерний классом (наследование и расширить функциональные возможности базового типа или интерфейс) или статический класс.