Struct数组作为输入参数

时间:2014-10-29 18:15:26

标签: c#

我的类中有一个名为RangeName的结构,在一个方法中,我按如下方式设置了一个数组:

RangeName[] myNames = new RangeName[currWkb.Names.Count];

以后我想将myNames传递给另一个方法。我试过了:

public void TestRoutine(RangeName[] myNames)

但我的代码不会构建。我得到了

  

可访问性不一致:参数类型' MyTools.clsTest.RangeName []'比方法' MyTools.clsTest.TestRoutine(MyTools.clsTest.RangeName [])'更难以访问

3 个答案:

答案 0 :(得分:4)

您需要制作RangeName结构public(至少)。默认情况下,结构和类是internal。或者,您可以通过将其设为internal来减少对方法的访问。

答案 1 :(得分:2)

当您获得不一致的可访问性错误时,这意味着具有更高可访问性的方法(在本例中为public)具有低可访问性的参数类型。

您需要确保RangeName结构在其封闭的上下文中具有公共可访问性。找到声明,并在public前面添加struct

答案 2 :(得分:0)

您的RangeName结构的可访问性低于使用RangeName []作为参数的公共TestRoutine。如果有人试图调用TestRoutine,他们将永远无法传入参数,因为该结构很可能无法被调用者访问。

您可以通过使TestRoutine对RangeName具有较低或相等的可访问性或将RangeName增加为public来解决此问题。