C# 为什么委托在用作属性时必须是公共的?
正在更改为公共修复,但我想更详细地了解原因C# 为什么委托在用作属性时必须是公共的?,c#,properties,delegates,C#,Properties,Delegates,正在更改为公共修复,但我想更详细地了解原因 MyDelegate是公共财产Del签名的一部分 如果某个对象使用了Del的返回值,那么它肯定需要返回类型的定义 换句话说,如果某个其他类有一个MyClass的实例,如下所示: class MyClass { **private** delegate void MyDelegate(); //error: MyDelegate is less accessible than property Del private MyDelegate
MyDelegate
是公共财产Del
签名的一部分
如果某个对象使用了Del
的返回值,那么它肯定需要返回类型的定义
换句话说,如果某个其他类有一个MyClass
的实例,如下所示:
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; }
}
}
除非
MyDelegate
是该类已知的类型,否则不可能执行此操作。MyDelegate
是公共属性签名的一部分Del
如果某个对象使用了Del
的返回值,那么它肯定需要返回类型的定义
换句话说,如果某个其他类有一个MyClass
的实例,如下所示:
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; }
}
}
除非
MyDelegate
是该类已知的类型,否则将不可能实现。如果将MyDelegate定义为私有类型,MyClass的使用者如何知道Del
的类型?这就像您定义了一个私有类并尝试在公共属性中使用该私有类一样如果您将MyDelegate定义为私有类型,MyClass的使用者如何知道Del
的类型?就像您定义了一个私有类并尝试在公共属性中使用该私有类一样MyDelegate
是属性的类型Del
。MyClass
的方式就是类实例的类型。如果您的类不是公共的,您将无法从外部代码创建该类的实例
这里的情况也是如此。外部代码无法访问类型
MyDelegate
,并且不知道如何处理该属性 MyDelegate
是属性的类型Del
。MyClass
的方式就是类实例的类型。如果您的类不是公共的,您将无法从外部代码创建该类的实例
这里的情况也是如此。外部代码无法访问类型MyDelegate
,并且不知道如何处理该属性 如果财产是私人的那么。。。再次读取错误消息;它没有说“因为它被用作财产”;此外,使用的所有类型都遵循这些可见性/可访问性规则,而不仅仅是委托。如果属性是私有的,则。。。再次读取错误消息;它没有说“因为它被用作财产”;此外,使用的所有类型都遵循这些可见性/可访问性规则,而不仅仅是委托。