2012-07-19 75 views
0

我有一个内部类内部访问类型类的一个阵列,其是在一个公共类

namespace commonNamespace 
{ 
    internal class A{} 
} 

我有同样的组件

public class B{} 

我要声明的阵列内的另一个公共类A类在classB中。 例如:

namespace commonNamespace 
{ 
    public class B 
    { 
     A[] array; 
    } 
} 

我得到不一致的访问级别错误message.Please让我知道我能做到这一点。

+3

由于'A [] array'是私有的(由于缺乏访问修饰符),我不明白为什么这是一个问题。这个领域是否真的公开? – 2012-07-19 13:52:27

+1

你在这里应该没问题。这只是一个问题,如果'array'被声明为public或protected。 – Lee 2012-07-19 13:53:01

+0

您发布的代码无问题编译。 – 2012-07-20 05:43:11

回答

1

只需访问修饰符添加到域数组:

public class B 
{ 
    internal A[] array; 
} 

这是访问修饰符层次:

public > protected > internal > internal protected > private 

所以才选择以下任何保护,你将被罚款。

+0

*不应该*帮助 - 因为默认是私人的。所以通过声明'array'变量'internal',你实际上增加了它的可见性。 – 2012-07-19 14:00:07

+0

访问修饰符层次结构错误,“内部保护”意味着“内部”或“受保护”。所以它可以被任何类内部访问,或者只能被其他程序集中的派生类访问。 – Lukazoid 2012-07-19 14:14:46

+0

对不起,我有一个接口里面的数组对象是公开的,因为我只想暴露assembly之外的接口。但是这个类不应暴露在外面。 – user1538072 2012-07-19 14:17:28

2

您必须拥有公开/受保护的字段或B中的财产才能公开某些A类型的实例。标记为内部,你应该很好去。

相关问题