2017-01-25 8 views
1
delegate bool Number(int n); 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     Number n = new Number(set); 
     number.setNo(n); 
    } 
    public static bool set(int x) 
    { 
     if (x == 5) 
     { 
      return true; 
     } 
     else return false; 

    } 
} 

数は問題はMSDNから一貫性のないアクセス:パラメータタイプ 'ConsoleApplication5.Numberが' メソッドよりも少ないアクセス可能である「ConsoleApplication5.number.setNo

public class number 
{ 
    public static void setNo(Number r, int num = 5) 
    { 
     if (r(num)) 
     { 
      Console.WriteLine("Value Match"); 
     } 
     else 
     { 
      Console.WriteLine("Value NotMatch"); 
     } 
     Console.ReadLine(); 
    } 
} 
} 

答えて

1

であるように思わクラスです。

他のタイプでネストされていない最上位タイプは、内部アクセスまたは公開アクセスのみ可能です。これらのタイプのデフォルトのアクセシビリティは内部的です。

e.e.e.最上位の型宣言で明示的にアクセス修飾子を指定しない場合は、デフォルトでinternalが使用されます。 internalpublicよりも制限されています(内部が宣言されているアセンブリ内でのみ表示されます)。だからNumberは、このデリゲートをパラメータとして受け入れるメソッドsetNoよりアクセスしにくいです。その平均メソッドはpublicです。つまり、他のアセンブリで使用できますが、他のアセンブリでは見えない型のパラメータを受け入れます。ただ、定義を委任するpublicを追加します。

public delegate bool Number(int n); 

さらに読書:internalaccessibility levels

+1

非常にありがとうございます:) – danu

関連する問題