【发布时间】:2013-10-18 05:46:15
【问题描述】:
当我编译此 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 确实解决了我的问题。现在,感谢答案和 cmets,我明白这是因为 public Function1 比内部(默认情况下)BaseClass 具有更大的可访问性。但是我不明白为什么我可以毫无错误地创建新的 NestedClass 对象?
【问题讨论】:
-
BaseClass默认为private。在BaseClass之外无法访问NestedClass,因为BaseClass是私有的。将BaseClass更改为public。
标签: c# visual-studio-2010 compiler-errors