C# 如何将泛型列表作为构造函数传递?
我是C#的新手。我来自爪哇 在Java中,我通常在构造函数中传递带有数据类型的ArrayList。 在C#中,ArrayList似乎不能采用数据类型,而只有List可以采用 所以我有这个表格,它是从其他表格中取出来的C# 如何将泛型列表作为构造函数传递?,c#,winforms,arraylist,.net-3.5,C#,Winforms,Arraylist,.net 3.5,我是C#的新手。我来自爪哇 在Java中,我通常在构造函数中传递带有数据类型的ArrayList。 在C#中,ArrayList似乎不能采用数据类型,而只有List可以采用 所以我有这个表格,它是从其他表格中取出来的 namespace Test { public partial class Form2 : Form { private List<TestData> list; public Form2 (List<TestDa
namespace Test
{
public partial class Form2 : Form
{
private List<TestData> list;
public Form2 (List<TestData> _list)
{
InitializeComponent();
this.list = _list;
}
}
}
名称空间测试
{
公共部分类表单2:表单
{
私人名单;
公共表格2(列表_列表)
{
初始化组件();
this.list=\u list;
}
}
}
如果我那样做了,我会犯这样的错误
可访问性不一致:参数类型不易访问
我尝试将私有列表更改为公共列表,但我遇到了更多错误
可访问性不一致:字段类型不易访问
如果我将列表更改为ArrayList。它起作用了。
在C#?命名空间测试中,是否无法将列表放入构造函数中
{
公共部分类表单2:表单
{
私人名单(private List);;
公共表格2(列表)
{
初始化组件();
这个._list=list;
}
}
}
检查“TestData”是私有的还是公共的,并按照上述代码重命名私有变量我认为问题不在于类
Form2
。看起来不错。错误消息说,不一致的可访问性:…
并且您正在这里访问类TestData
。因此,您必须检查TestData
的定义,并确认它定义为公共类TestData
您需要将TestData
更改为公共类
public class TestData
{
}
如果TestData
是internal
(如果您编写了类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; }
}
}
使用System.Collections.Generic;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
私有财产清单;
公共表格1()
{
初始化组件();
}
公共表格1(估价清单)
{
_财产=估价单;
初始化组件();
}
}
公开课考试
{
公共int Id{get;set;}
私有字符串名称{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>());
}
}
}
使用System.Collections.Generic;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1
{
公共部分类表单2:表单
{
公共表格2()
{
初始化组件();
//默认构造函数。
新表格1();
//第二名承包商。
新表格1(新列表());
}
}
}
提示:测试类必须是公共类。检查“TestData”是私有的还是公共的谢谢!我不知道默认情况下该类不是“public”。我稍后会接受答案:)你确定
List
导致了一个问题。正如我看到的,上面的代码工作得非常好。除了一个次要的命名约定外,没有问题。检查TestData
class及其使用的属性是否可访问。
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>());
}
}
}