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; }
}
}
更改为公开修复,但我想更详细地了解原因。
答案 0 :(得分:5)
如果将MyDelegate定义为私有类型,MyClass的使用者如何知道Del
的类型?这就像你定义一个私有类并尝试在公共属性中使用该私有类
答案 1 :(得分:4)
MyDelegate
是公共财产Del
签名的一部分。
如果某些内容消耗Del
的返回值,则肯定需要返回类型的定义。
换句话说,如果其他一些类的实例MyClass
是这样的:
MyClass myclass = new MyClass();
MyDelegate del = myclass.Del;
除非MyDelegate
是该类已知的类型,否则将无法实现。
答案 2 :(得分:1)
MyDelegate
是属性Del
的类型。 MyClass
的方式是类实例的类型。如果您的类不是公共的,那么您将无法从外部代码创建该类的实例。
这里的情况也是如此。外部代码无法访问类型MyDelegate
,并且不知道如何处理该属性。