Делегаты могут быть частными? В противном случае, какова причина позади этого кроме нормальных ограничений, вызванных им являющийся частным?
Делегаты имеют те же ограничения, что и любой тип, в отношении видимости. Таким образом, у вас не может быть частного делегата на верхнем уровне .
namespace Test
{
private delegate void Impossible();
}
Это вызывает ошибку компилятора:
Элементы, определенные в пространстве имен, не могут быть явно объявлены как частные, защищенные или защищенные внутренние
Но, как и класс, вы можете объявить делегат частным, когда он находится внутри другой класс .
namespace Test
{
class Sample
{
// This works just fine.
private delegate void MyMethod();
// ...
}
}
Причина в основном восходит к определению того, что private
находится в C #:
private | Доступ ограничен содержащим типом.