如何访问List <customclass> </customclass>的公共和私有成员

时间:2011-12-12 18:01:03

标签: c# visual-studio-2010 list c#-4.0

您创建一个代表含有2列的行的类:

public class Foo
{
    // obviously you find meaningful names of the 2 properties

    public string Column1 { get; set; } 
    public string Column2 { get; set; }
}

然后存储在List<Foo>

List<Foo> _items = new List<Foo>();
_items.Add(new Foo { Column1 = "bar", Column2 = "baz" });

如何将列表框的数据源设置为项目?如果我做

ListBox1.DataSource = _items; 

我会在列表框中看到list of Objects而不是其中包含的文字

3 个答案:

答案 0 :(得分:4)

要访问公共成员,您只需遍历项目:

foreach(Foo item in _items)
{
     // use item
}

由于您的收藏是List<T>,您还可以按索引访问这些项目:

string col1 = _items[0].Column1;  // First item in list's column1

但是,您无法访问Foo个类私有成员。在Foo私有中成员的整个目的是阻止来自Foo类之外的访问。

答案 1 :(得分:1)

覆盖Foo类中的ToString()方法。 ListBox使用它将对象转换为字符串

样品:

class A

{

    public int I

    {

        get;

        set;

    }

    public override string ToString()

    {

        return "I=" + I.ToString();

    }

}



public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

    }



    private void Form1_Load(object sender, EventArgs e)

    {

        listBox1.DataSource = new[]

        {

            new A { I = 1},

            new A { I = 2},

        };

    }

}

答案 2 :(得分:0)

您正在寻找_items[42]和/或foreach循环。