общественность по сравнению с внутренними методами на внутреннем классе

Переименуйте main.m в shortmain.m и запустите

matlab -nodisplay -nosplash -nojvm -r "shortmain('input.expr', 'input.score', 'input.param', 'Trans'); exit"
.
81
задан wattostudios 30 April 2012 в 14:21
поделиться

5 ответов

internal class Foo объявление переопределит доступность public void Fee() метод, эффективно делая это внутренним.

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

95
ответ дан Reed Copsey 24 November 2019 в 09:34
поделиться

На самом деле - существует большая разница при использовании отражения; в частности, Silverlight может быть очень нарушена, пытаетесь ли Вы доступ внутренние методы через отражение, даже если у Вас был бы доступ. Я видел случаи, когда я должен был обнародовать метод, чтобы заставить код работать над Silverlight, даже при том, что это работает над регулярной.NET.

Вы могли бы найти то же с частичным доверием регулярной.NET.

28
ответ дан Marc Gravell 24 November 2019 в 09:34
поделиться

Вы корректны, и Fee и Fi будут одинаково доступны.

Из спецификации языка 3.0 до-диеза, под 3.5.2:

Область доступа вложенного участника M, объявленного в типе T в рамках программы P, определяется следующим образом (замечание, что сам M может возможно быть типом):

• Если объявленный модификатор доступа M общедоступен, область доступа M является областью доступа T.

Так, даже если Сбор будет объявлен столь же общедоступный, то это будет столь же доступно как Foo (т.е. внутренний).

7
ответ дан eglasius 24 November 2019 в 09:34
поделиться

Согласно документации MSDN Ваш класс Foo не будет доступен вне Вашего блока, таким образом, это не будет иметь никакого значения для маркировки методов как внутренние или общедоступные; это даже не имеет значения при помощи Атрибута InternalsVisibleTo

3
ответ дан Jhonny D. Cano -Leftware- 24 November 2019 в 09:34
поделиться

Единственное, чего здесь не хватает, - это зачем вам это делать?

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

Итак, как мне успешно реализовать интерфейс и в то же время предотвратить его доступность в публичном аспекте моей библиотеки? Отметьте класс как внутренний, а реализованную функцию как общедоступную.

35
ответ дан 24 November 2019 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: