当我编译此 C# 代码时,我的 Visual Studio 2010 发现参数类型错误的可访问性不一致:
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 比内部(默认情况下)BaseClass 具有更大的可访问性。但我不明白为什么我可以创建新的 NestedClass 对象而不会出错?