参数比方法更难访问

时间:2012-03-15 19:41:48

标签: c# list

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

List<Branch> myArgus = new List<Branch>();

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> branch = new List<Branch>();

public BranchOverview(List<Branch> myArgus)
{
    InitializeComponent();

    branch = myArgus;
}

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

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

5 个答案:

答案 0 :(得分:43)

您必须声明Branch是公开的:

public class Branch {
  . . . 
}

答案 1 :(得分:8)

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

如果您将Branch类用作公共方法中的参数,则需要将其公开。

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

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

internal BranchOverview(List<Branch> myArgus)
^^^^^^^^

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

class Branch { ... }

表示Branchinternal

答案 4 :(得分:0)

变化:

List<Branch> myArgus = new List<Branch>();

公开。