-1

下面这段代码让我对私有类的内部结构感到困惑。我可以看到很多关于这个错误的搜索结果,但下面的声音仍然很奇怪

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) 中却没有?

4

2 回答 2

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对程序集是私有的(然后不可访问)。这就是编译器说“不一致的可访问性”的原因。

于 2012-06-28T12:01:10.193 回答
2

那是因为你在暴露

public static XYZ sample1;

成员在“X”命名空间之外的其他代码中可见。但是类 XYZ 被标记为私有,因此错误。所以这里没有什么奇怪的。

于 2012-06-28T12:02:46.677 回答