私の Visual Studio 2010 は、この C# コードをコンパイルすると、パラメーター型エラーの一貫性のないアクセシビリティを検出します。
class Program
{
class BaseClass
{
public class NestedClass
{
}
}
public static bool Function1(BaseClass.NestedClass obj)
{
return true;
}
static void Main(string[] args)
{
Function1(new BaseClass.NestedClass());
new BaseClass.NestedClass();
Console.ReadLine();
}
}
しかし、 function1 にコメントすると機能します。
class Program
{
class BaseClass
{
public class NestedClass
{
}
}
//public static bool Function1(BaseClass.NestedClass obj)
//{
// return true;
//}
static void Main(string[] args)
{
//Function1(new BaseClass.NestedClass());
new BaseClass.NestedClass();
Console.ReadLine();
}
}
NestedClass を作成できるのにパラメータにできないのはなぜですか?
編集:申し訳ありませんが、私の質問は正確ではありませんでした。上記では、コンソール アプリケーションで問題を再現しようとしましたが、私のプロジェクトでは別の構造のクラスがあります。
class BaseClass
{
public class NestedClass
{
}
}
public class OtherClass
{
public void Function1(BaseClass.NestedClass param)
{
var newObj = new BaseClass.NestedClass();
}
}
PS: BaseClass を public に設定することで、私の問題は本当に解決しました。さて、回答とコメントのおかげで、public Function1 は internal (デフォルト) BaseClass よりも優れたアクセシビリティを備えているためであることがわかりました。しかし、エラーなしで新しい NestedClass オブジェクトを作成できる理由がわかりません。