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

MyDelegatepublic property の署名の一部ですDel

何かが の戻り値を消費する場合、返さDelれる型の定義が確かに必要です。

つまり、他のクラスに次のMyClassようなインスタンスがある場合:

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

MyDelegateがそのクラスに知られている型でない限り、可能ではありません。

于 2012-07-04T05:11:55.550 に答える
1

MyDelegateプロパティのタイプですDel。方法MyClassは、クラス インスタンスの型になります。クラスが public でない場合、外部コードからクラスのインスタンスを作成することはできません。

ここでも同じです。外部コードは型MyDelegateにアクセスできず、そのプロパティをどうするかわかりません。

于 2012-07-04T05:14:14.567 に答える