参数的可访问性不如方法

本文关键字:方法 访问 参数 | 更新日期: 2023-09-27 18:28:01

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

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>)'

参数的可访问性不如方法

您必须声明Branch为公共:

public class Branch {
  . . . 
}

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

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

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

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

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

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

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

class Branch { ... }

这意味着CCD_ 12是CCD_。

更改:

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

公开。