C#out struct参数

ros*_*nik 0 c# struct

我在C#中有这个代码,但是这个代码有问题:

struct myStruct
{
  public string sOne;
  public string sTwo;
}

public static int ChangeStruct(out myStruct[] arrmyStruct)
{
  arrmyStruct= new myStruct[256];
  arrSNChildrenStruct[0].sOne= "";
  arrSNChildrenStruct[0].sTwo= "";

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我构建时,我有这样的错误:不一致的可访问性:参数类型'out ........比方法更难访问.....

怎么了?谢谢

Per*_*t28 7

创建一个public struct myStruct而不是内部结构.private如果您只在本地使用它,请创建ChangeStruct().


Jon*_*eet 5

这与它作为out参数或数组无关.你会得到同样的错误:

public static void ChangeStruct(myStruct foo)
Run Code Online (Sandbox Code Playgroud)

您的方法是公共的,但您的结构internal(任何顶级类型的默认可访问性)或者private它是嵌套类型.这意味着程序集外部的任何调用者都应该可以访问该方法......但是不可能理解方法签名.C#不允许您声明引用所有可能的调用者都看不到的类型的方法.

选项:

  • 制作方法internalprivate
  • 使结构公开

其他说明:

  • 你的命名非常传统.根据其含义命名您的类型,并使其成为PascalCased.从变量名中删除"arr"前缀.
  • 公共领域通常是一个坏主意,可变结构也是如此.