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
,并且不知道如何处理该属性

如果财产是私人的那么。。。再次读取错误消息;它没有说“因为它被用作财产”;此外,使用的所有类型都遵循这些可见性/可访问性规则,而不仅仅是委托。如果属性是私有的,则。。。再次读取错误消息;它没有说“因为它被用作财产”;此外,使用的所有类型都遵循这些可见性/可访问性规则,而不仅仅是委托。