1
class MyClass
{
    **private** delegate void MyDelegate(); //error: MyDelegate is less accessible than property Del
    private MyDelegate del;
    public MyDelegate Del
    {
        get { return this.del; }
        set { this.del = value; }
    }
}

更改为公共修复,但我想更详细地了解原因。

4

3 回答 3

5

如果将 MyDelegate 定义为私有类型,那么 MyClass 的使用者如何知道 的类型Del?就像您定义了一个私有类并尝试在公共属性中使用该私有类

于 2012-07-04T05:12:02.077 回答
4

MyDelegate是公共财产的签字部分Del

如果某物消耗了 的返回值Del,它肯定需要返回类型的定义。

换句话说,如果某个其他类有这样的实例MyClass

MyClass myclass = new MyClass();
MyDelegate del = myclass.Del;

MyDelegate除非是该类已知的类型,否则是不可能的。

于 2012-07-04T05:11:55.550 回答
1

MyDelegate是属性的类型Del。方式MyClass将是类实例的类型。如果您的课程不是公开的,您将无法从外部代码创建该课程的实例。

这里的情况也是如此。外部代码无法访问该类型MyDelegate,也不知道如何处理该属性。

于 2012-07-04T05:14:14.567 回答