2010-02-14 3 views
6

Могут ли делегаты быть частными? Если нет, в чем причина этого, кроме обычных ограничений, вызванных его закрытием?Объем делегата в C#

+1

Какой язык вы используете? –

+0

C#, отредактировал заголовок. Благодарю. – SoftwareGeek

ответ

14

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

namespace Test 
{ 
    private delegate void Impossible(); 
} 

Это приводит к ошибке компилятора:

Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal

Но как класс, вы можете объявить делегат приватный, когда он находится внутри другого класса.

namespace Test 
{ 
    class Sample 
    { 
     // This works just fine. 
     private delegate void MyMethod(); 

     // ... 
    } 
} 

Причина в основном восходит к определению what private is in C#:

private | Access is limited to the containing type.

+0

+1: избили меня, и более полный ответ! –

+0

приятно, спасибо bobbymcr. иногда нам необходимо усиление концепций/основ. – SoftwareGeek

Смежные вопросы