我在下面这段代码让我对私人课程的内部感到困惑。我可以看到很多关于此错误的搜索结果,下面仍然听起来很奇怪
namespace X
{
public class Program
{
public static XYZ sample1;
public static void Main(string[] args)
{
XYZ sample2 = new XYZ(); // OK (1)
sample1 = new XYZ(); // NOK (2)
...
}
}
private class XYZ
{
}
}
如果XYZ类是私有的,它在(1)中如何工作而在(2)中不起作用?
答案 0 :(得分:3)
它适用于(1)和(2):
// OK, you declare and assign a local variable of a known type
XYZ sample2 = new XYZ();
// OK, you assign a static field of a known type
sample1 = new XYZ();
您根本无法声明public static XYZ sample1;
,因为当XYZ为私有时它是公开的:
// This won't compile if XYZ is private
public static XYZ sample1;
这是有道理的,X.Program
的用户可以访问其公开成员(在这种情况下为sample1
)但他们将无法使用它们,因为XYZ
是私有的装配(然后无法访问)。这就是编译器说“不一致的可访问性”的原因。
答案 1 :(得分:2)
因为你正在暴露
public static XYZ sample1;
从