C#中代表的范围

时间:2010-02-14 02:32:04

标签: c# scope delegates

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

1 个答案:

答案 0 :(得分:16)

代表在可见性方面与任何类型都有相同的限制。因此,无法在顶级设置私人代表

namespace Test
{
    private delegate void Impossible();
}

这会生成编译器错误:

  

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

但是就像一个类,当它位于另一个类中时,你可以声明一个委托私有。

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

        // ...
    }
}

原因基本上可以追溯到what private is in C#:

的定义
  

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