Єдине, чого тут не вистачає у відповіді, - чому б ви це робили?
Деякі бібліотеки мають багато класів, які не призначені для споживача бібліотеки, але вони повинні успадковувати інтерфейси, позначені як загальнодоступні. Наприклад, у мене є бібліотека з класом, яка успадковує інтерфейс IComparer, але вона використовується лише внутрішньо, і я не хочу захаращувати загальнодоступний аспект своєї бібліотеки. Якщо я позначу реалізовану функцію порівняння як внутрішню, компілятор скаржиться, що я не ввожу інтерфейс IComparer.
То як я можу успішно реалізувати інтерфейс і одночасно запобігти його доступу в загальнодоступному аспекті моєї бібліотеки? Позначте клас як внутрішній, але реалізована функція як загальнодоступна.