0

我有一个对象,它的属性包括字符串、整数和双精度。我有对象的三个实例:item1、item2、item 3。

我可以通过说 item1.name 等来打印出值。但是如何循环遍历对象并打印值?我认为我不能将对象转换为列表或数组,因为对象具有不同的类型 - 对吧?

4

3 回答 3

2

如果你的意思是它们都是同一个类的实例,那么在这种情况下你可以做什么是非常基本的。如果是这种情况,您可以创建该类类型的列表。然后以您希望的任何方式迭代对象,您将能够打印出该类包含的任何公共属性。

var examples = new List<ExampleObject>()
{
   new ExampleObject { ID = 1, Name = "Display" },
   new ExampleObject { ID = 2, Name = "Display2" },
};

examples.ForEach(x => Console.WriteLine("id = {0}, name =  {1}", x.ID, x.Name));
于 2013-06-22T02:46:10.263 回答
0

如果它们都具有“名称”属性,则可以创建一个包含该属性的接口。

public Interface IShowName
{
    string Name { get; }

}

然后使每种类型都实现 IShowName (根据您的说法,他们已经这样做了)。然后您可以将它们全部放入 IShowName 列表中。

var myList = new List<IShowName>();
myList.Add(obj1);
myList.Add(obj2);
myList.Add(obj3);

foreach(var nameShower in myList)
{
    System.Console.WriteLine(nameShower.Name);
}
于 2013-06-22T02:43:54.650 回答
0

您可以通过反射来做到这一点:

foreach (PropertyInfo propertyInfo in obj1.GetType().GetProperties())
{
    //If property is public
    if (propertyInfo.CanRead)
    {
        object propValue = propertyInfo.GetValue(obj1, null);
        System.Console.WriteLine(propValue.ToString());
    }
}
于 2013-06-22T02:50:54.687 回答