Мой учитель попросил нас изучить, что такое класс расширения, но я не могу найти что-либо в MSDN или Google. Любая помощь?Что такое расширение класса?
ответ
В формальной терминологии C# не существует понятия «класс расширения». Это может означать класс, определяющий extension methods (который не является чем-то особенным, это просто класс static
.)
У меня тоже были сомнения по поводу вопроса. Хорошо, хорошо знать. Спасибо! :) –
Класс, который имеет extension methods.
Методы расширения позволяют «добавлять» методы к существующим типам без создания нового производного типа, перекомпиляции или иным образом изменяющее исходного типа. Методы расширения представляют собой особый вид статического метода, , но они называются так, как если бы они были методы экземпляра расширенного типа. Для кода клиента, написанного на C# и Visual Basic, нет явного различия между вызовом метода расширения и методов, которые фактически определены в типе.
Ваш преподаватель может также говорить о partial classes ...
технически «класс расширения» нет ничего. В народном языке он может быть использован кем-то для обозначения класса, предназначенного для хранения extension methods. Методы расширения - это методы, используемые для того, чтобы выглядеть как методы экземпляра класса, но которые являются действительно статическими методами в статическом классе, которые предоставляются для улучшения и инкапсуляции определенных функций. Они особенно полезны, когда вы пытаетесь расширить определенные функции по типу, который невозможно изменить напрямую и добавить метод. Кроме того, они часто используются с универсальными типами (особенно в рамках .net 3.5) для расширения функциональности с использованием методов, предоставляемых определенным интерфейсом.
Я не знаю, класс расширения есть. Но расширение метод есть. Тест Extension Method
класса расширения в C# может быть просто дочерний классом (наследование и расширить функциональные возможности базового типа или интерфейс) или статический класс.
Вы имеете в виду методы расширения? Не считайте, что классы расширения существуют в C#, если вы не ссылаетесь на производные классы? – James
Вы уверены, что это был «класс расширения», а не «метод расширения»? –