C# 结构数组作为输入参数
在我的类中有一个名为RangeName的结构,在一个方法中,我设置了一个数组,如下所示:C# 结构数组作为输入参数,c#,C#,在我的类中有一个名为RangeName的结构,在一个方法中,我设置了一个数组,如下所示: RangeName[] myNames = new RangeName[currWkb.Names.Count]; 稍后我想把我的名字传给另一个方法。我试过: public void TestRoutine(RangeName[] myNames) 但我的代码不会生成。我明白了 可访问性不一致:参数类型“MyTools.clsTest.RangeName[]”的可访问性不如方法“MyTools.clsT
RangeName[] myNames = new RangeName[currWkb.Names.Count];
稍后我想把我的名字传给另一个方法。我试过:
public void TestRoutine(RangeName[] myNames)
但我的代码不会生成。我明白了
可访问性不一致:参数类型“MyTools.clsTest.RangeName[]”的可访问性不如方法“MyTools.clsTest.TestRoutine(MyTools.clsTest.RangeName[])”
您需要将您的
RangeName
structpublic
(至少)。默认情况下,结构和类是内部的
。当然,您也可以通过将方法设置为内部的
来降低方法的可访问性。您需要将范围名
结构公开
(至少)。默认情况下,结构和类是内部的
。当然,也可以通过使方法内部的
来降低方法的可访问性。当出现不一致的可访问性错误时,这意味着具有较高可访问性的方法(在本例中,即公共的
)具有低可访问性的参数类型
您需要确保
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
。