参数比方法更难访问

我正在尝试将列表从一个表单类传递到另一个表单类。 这是代码:

List myArgus = new List(); private void btnLogin_Click(object sender, EventArgs e) { // Get the selected branch name string selectedBranch = lbBranches.SelectedItem.ToString(); for (int i = 0; i < myArgus.Count; i++) { if (myArgus[i]._branchName == selectedBranch) { // Open the BranchOverview form BranchOverview branchOverview = new BranchOverview(myArgus[i]); branchOverview.Show(); } else { // Branch doesn't exist for some reason } } } 

然后在我的BranchOverview类中:

 List branch = new List(); public BranchOverview(List myArgus) { InitializeComponent(); branch = myArgus; } 

当我运行代码时,我收到此错误:

 Inconsistent accessibility: parameter type 'System.Collections.Generic.List' is less accessible than method 'Argus.BranchOverview.BranchOverview(System.Collections.Generic.List)' 

您必须声明Branch是公开的:

 public class Branch { . . . } 

正如错误消息所示,方法的所有参数的类型必须至少与方法本身一样可访问。

如果要将Branch类用作公共方法中的参数,则需要将Branch类设置为public。

 public class Branch { .... } ^^^^^^ 

或者,您可以将方法更改为internal而非public

 internal BranchOverview(List myArgus) ^^^^^^^^ 

BranchOverview的构造BranchOverviewpublic ,这意味着其forms参数列表中涉及的所有类型也必须是public 。 很可能你没有为Branch提供可访问性规范,即你已经写过了

 class Branch { ... } 

这意味着Branchinternal

默认情况下,如果不存在access modifier则类的字段是private

更改:

 List myArgus = new List(); 

公开。