访问List <t> </t>中对象的属性

时间:2012-05-29 09:52:16

标签: c# list object properties

我正在尝试使用存储在List<T>对象中的单个对象实例的属性,但我似乎无法直接访问这些属性。

我有一个对象(sportsCarVehicle),它存储用户定义的名称(strVehicleName)(在其他属性中,但这并不重要)。然后将对象存储在名为List<sportsCarVehicle>的{​​{1}}对象中 我需要访问sportsCarVehicleStoragesportsCarVehicle的每个实例,并将List<sportsCarVehicle>的值传递给表单上的组合框。

我假设我需要某种循环来遍历每个实例并将名称传递给组合框,但我的主要问题是无法访问我需要的属性。 strVehicleName个实例没有可引用的名称 还有一件事需要注意:sportsCarVehicle方法中的sportsCarVehicle构造函数被调用。

关于我如何做到这一点的任何建议?

4 个答案:

答案 0 :(得分:2)

你不能这样做

List<string> lst = new List<string>{"Hello", "World"};

 int len = lst[0].Length;

此处.Length是字符串的属性。只要该财产是公开的,我们就可以访问它。

在你的情况下

List<sportsCarVehicle> sportsCarVehicleStorage = new List<sportsCarVehicle>();

// Some code to populate list.

mycombobox.Items = sportsCarVehicleStorage
                   .Select(x => x.strVehicleName).ToArray();

确保属性strVehicleName在该类中公开。

答案 1 :(得分:1)

您可以使用foreach遍历列表,将列表的每个成员分配给命名变量,例如:

foreach (sportsCarVehicle scv in sportsCarVehicleStorage)
{
  //scv is the name of the currently looping sportsCarVehicle object
  //use scv.strVehicleName to access the property.
  myComboBox.Items.Add(scv.strVehicleName);
}

答案 2 :(得分:0)

foreach (SportsCarVehicle car in myListName)
{
    //do stuff here
}

这是最基本的例子,您可以使用PLINQ等以更简化的方式进行。

答案 3 :(得分:0)

另一种方法是将sportsCarVehicle列表直接绑定到comboBox,例如:

List<sportCarVehicle> sportsCarVehicleStorage= new List<sportsCarVehicle>;

// Set up list content here
// ...

myComboBox.DataSource = sportsCarVehicleStorage;
myComboBox.DisplayMember = "strVehicleName";