我的类中有一个名为RangeName的结构,在一个方法中,我按如下方式设置了一个数组:
RangeName[] myNames = new RangeName[currWkb.Names.Count];
以后我想将myNames传递给另一个方法。我试过了:
public void TestRoutine(RangeName[] myNames)
但我的代码不会构建。我得到了
可访问性不一致:参数类型' MyTools.clsTest.RangeName []'比方法' MyTools.clsTest.TestRoutine(MyTools.clsTest.RangeName [])'更难以访问
答案 0 :(得分:4)
您需要制作RangeName
结构public
(至少)。默认情况下,结构和类是internal
。或者,您可以通过将其设为internal
来减少对方法的访问。
答案 1 :(得分:2)
当您获得不一致的可访问性错误时,这意味着具有更高可访问性的方法(在本例中为public
)具有低可访问性的参数类型。
您需要确保RangeName
结构在其封闭的上下文中具有公共可访问性。找到声明,并在public
前面添加struct
。
答案 2 :(得分:0)
您的RangeName结构的可访问性低于使用RangeName []作为参数的公共TestRoutine。如果有人试图调用TestRoutine,他们将永远无法传入参数,因为该结构很可能无法被调用者访问。
您可以通过使TestRoutine对RangeName具有较低或相等的可访问性或将RangeName增加为public来解决此问题。