C# 结构数组作为输入参数

C# 结构数组作为输入参数,c#,C#,在我的类中有一个名为RangeName的结构,在一个方法中,我设置了一个数组,如下所示: RangeName[] myNames = new RangeName[currWkb.Names.Count]; 稍后我想把我的名字传给另一个方法。我试过: public void TestRoutine(RangeName[] myNames) 但我的代码不会生成。我明白了 可访问性不一致:参数类型“MyTools.clsTest.RangeName[]”的可访问性不如方法“MyTools.clsT

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

RangeName[] myNames = new RangeName[currWkb.Names.Count];
稍后我想把我的名字传给另一个方法。我试过:

public void TestRoutine(RangeName[] myNames)
但我的代码不会生成。我明白了

可访问性不一致:参数类型“MyTools.clsTest.RangeName[]”的可访问性不如方法“MyTools.clsTest.TestRoutine(MyTools.clsTest.RangeName[])”


您需要将您的
RangeName
struct
public
(至少)。默认情况下,结构和类是
内部的
。当然,您也可以通过将方法设置为
内部的
来降低方法的可访问性。您需要将
范围名
结构
公开
(至少)。默认情况下,结构和类是
内部的
。当然,也可以通过使方法
内部的
来降低方法的可访问性。当出现不一致的可访问性错误时,这意味着具有较高可访问性的方法(在本例中,即
公共的
)具有低可访问性的参数类型


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

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


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

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


您可以通过使测试例程的可访问性低于或等于RangeName或将RangeName增加为public来解决此问题。

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


您可以通过使测试例程的可访问性低于或等于RangeName或将RangeName增加到public来解决此问题。

请发布
RangeName
的代码。请发布
RangeName
的代码。“默认情况下结构和类是内部的”:差不多。对于顶级类型(类、结构、接口)也是如此。但不适用于嵌套类型。通常,默认可访问性是限制性最大的可访问性,它仍然使声明的成员可用。对于嵌套成员(包括类型),可访问性实际上是
private
,而不是
internal
“默认情况下结构和类是内部的”:几乎是。对于顶级类型(类、结构、接口)也是如此。但不适用于嵌套类型。通常,默认可访问性是限制性最大的可访问性,它仍然使声明的成员可用。对于嵌套成员(包括类型),可访问性实际上是
private
,而不是
internal