Подтвердить что ты не робот

Общая перегрузка интерфейса. Действительная терминология?

Вот очень простой пример перегрузки метода, два метода с тем же именем, но с разными сигнатурами:

int MyMethod(int a)
int MyMethod(int a, string b)

Теперь скажем, что я определяю два общих интерфейса, разделяя одно и то же имя, но с различным количеством параметров типа, например:

IMyInterface<T>
IMyInterface<T1,T2>

Могу ли я сказать, что это представляет собой "общую перегрузку интерфейса"? Или термин "перегрузка" применяется только к методам в таком контексте? Тем не менее он выглядит очень похожим на перегрузку метода в том смысле, что мы сохраняем точное имя, но изменяем параметры.

Если я не могу сказать "общая перегрузка/перегрузка интерфейса", что я могу сказать об этих двух разных интерфейсах, имеющих одно и то же имя?

Спасибо и извините, если это глупый вопрос, но googling arround "общая перегрузка интерфейса" или "общая перегрузка интерфейса" не приносит мне многого, а результаты, связанные с перегрузкой методов интерфейса, что меня не интересует.

4b9b3361

Ответ 1

Типы с тем же именем, но с другим числом параметров типового типа (включая ноль) - это просто разные типы. Термин "перегрузка" здесь не применяется. Перегрузка действительно применима только к методам того же типа и имеет одно и то же имя, но разные подписи.


Очень часто имеет общий и не общий интерфейс с тем же именем (пример из библиотеки.NET):

public interface IList : ICollection, IEnumerable

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

Они просто называются родовыми и неэквивалентными.


Имя.NET-типа общего типа - это имя типа, заканчивающегося серьезным акцентом (`) и количеством параметров типа. Например, тип IMyType<T> в С# или IMyType(Of T) в VB переводится на

IMyType'1

внутренне. <T> на самом деле просто синтаксическая конструкция С#, которая переводится во внутреннее имя.NET, используемое CLR.

IMyType<T,U> будет переведен на

IMyType'2

Это ясно показывает, что типы с одним и тем же именем в С#, отличающиеся только их количеством параметров типового типа, относятся к типам реализаций (CLR-) с разными именами.