C#中代表的范围

Sof*_*eek 6 c# delegates scope

代表可以私密吗?如果没有,除了私有化导致的正常限制之外,其他原因是什么?

bob*_*mcr 16

代表在可见性方面与任何类型都有相同的限制.所以你不能在顶层有一个私人代表.

namespace Test
{
    private delegate void Impossible();
}
Run Code Online (Sandbox Code Playgroud)

这会生成编译器错误:

命名空间中定义的元素不能显式声明为private,protected或protected internal

但是就像一个类一样,当它驻留在另一个类中时,你可以声明一个委托私有.

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

        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

究其原因主要追溯到定义什么private是C#:

私人 | 访问仅限于包含类型.