无法使用泛型列表填充datagridview

时间:2013-03-21 08:54:32

标签: c# list generics dataset

我不明白以下简单代码的问题是什么。它只需要一个列表并在datagridview中显示它。这是我得到的错误:

  

错误1可访问性不一致:返回类型   'System.Collections.Generic.List'   比方法更难获得   'WindowsFormsApplication10.Form1.FillGridView()'

另外,有没有办法将列表,arraylist等转换为数据集类型?

public partial class Form1 : Form
    {
    public Form1 ()
    {
        InitializeComponent ();
    }

    public List<Student> FillGridView ()
    {
        List<Student> l = new List<Student> ();
        l.Add (new Student { Fname="bloke", Lname="lll", Contact=293489485});
        l.Add (new Student { Fname = "dog", Lname = "assdf", Contact = 35345 });
        l.Add (new Student { Fname = "mary", Lname = "sdff", Contact = 6456 });
        l.Add (new Student { Fname = "john", Lname = "sdfsdf", Contact = 45656 });
        return l;


    }


    private void Form1_Load ( object sender, EventArgs e )
    {
        dataGridView1.DataSource = this.FillGridView ();
    }

    private void button1_Click ( object sender, EventArgs e )
    {

    }
}

2 个答案:

答案 0 :(得分:2)

您的方法是否需要公开?看起来您的学生班级不公开,因此将其列表返回给任何公共呼叫者是不一致的。从外观上看,您的方法可以是私有的。

private List<Student> FillGridView()

答案 1 :(得分:0)

您的Student班级访问修饰符可能是non-public

对于public类型的non-public方法没有意义。 该方法如何适用于外部程序集?

您可以将FillGridView访问修饰符更改为private

private List<Student> FillGridView ()

Access Modifiers

了解更多信息

来自C# Language Specification

  

10.3.6组成类型

     

成员声明中使用的类型称为   该成员的组成类型。可能的组成类型是   常量,字段,属性,事件或索引器的类型,返回值   方法或运算符的类型,以及方法的参数类型,   索引器,运算符或实例构造函数。 a的组成类型   成员必须至少与该成员本身一样易于访问(§3.5.4)。