[英]How to pass generic list as constructor?
我是C#的新手。 我来自Java。
在Java中,我通常在构造函数中传递具有数据类型的ArrayList。 在C#中,似乎ArrayList不能采用数据类型,而只有List可以这样做。
所以我有这张表格从其他表格中提取列表
namespace Test
{
public partial class Form2 : Form
{
private List<TestData> list;
public Form2 (List<TestData> _list)
{
InitializeComponent();
this.list = _list;
}
}
}
如果我那样做,我会得到类似的错误
可访问性不一致:参数类型难以访问。
我尝试将私人名单更改为公开名单,但出现了更多错误
可访问性不一致:字段类型不可访问。
如果我将List更改为ArrayList。 工作正常 不能将List放在C#中的构造函数中吗?
我认为问题不在类Form2
。 看起来不错。 错误消息指出访问TestData
Inconsistent accessibility:..
并且您正在此处访问类TestData
。 因此,您必须检查TestData
的定义并确认将其定义为public class TestData
namespace Test
{
public partial class Form2 : Form
{
private List<TestData> _list;
public Form2 (List<TestData> list)
{
InitializeComponent();
this._list = list;
}
}
}
检查“ TestData”是私有的还是公共的,并按照上面的代码重命名私有变量
您需要将TestData
更改为公开
public class TestData
{
}
如果TestData
是internal
(如果您编写的class TestData
是TestData
则为默认值)或private
,则这意味着它比公共的构造函数更难以访问 ,这是您正在阅读的错误。
因此,您有一个可以使用限制类型的任何人访问的构造函数。 这是不允许的。
我建议使用以下示例并与您的代码进行比较,并声明其他承包商和用途。
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private List<Test> _property;
public Form1()
{
InitializeComponent();
}
public Form1(List<Test> valueList)
{
_property = valueList;
InitializeComponent();
}
}
public class Test
{
public int Id { get; set; }
private string Name { get; set; }
}
}
其他形式:
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
// Default Constractor.
new Form1();
// Secound Constractor.
new Form1(new List<Test>());
}
}
}
提示:测试班必须是公共班。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.