使用字符串选择数组中的对象值

本文关键字:对象 数组 字符串 选择 | 更新日期: 2023-09-27 17:57:06

目前正在为一个问题而苦苦挣扎。我在一个数组中有 30 个对象。data[],每个对象中有 24 小时。"Hour00"、"Hour01"等。我想遍历这些小时。if(data[i].小时00>什么)但似乎我无法以简单的方式增加它。我尝试使用下面的代码,但它不允许我使用字符串"b"来定义我要提取的小时数。

for(int k = 0; k < 24; k++)
{
    string b = "Hour00";
    if(data[i].b > 20){
        *Something happens*
}

还尝试过:

for(int k = 0; k < 24; k++)
{
    if(data[i].Hour(k) > 20){
        *Something happens*
}

使用字符串选择数组中的对象值

考虑一个示例类Item

public class Item
{
    public int Hour0 { get;set;}
    public int Hour1 { get;set;}
    public int Hour2 { get;set;}
}

使用反射,您可以将HourXX道具迭代为:

var item = new Item { Hour0 = 10, Hour1 = 15, Hour2 = 20 };
for (int i = 0; i <= 2; i++)
{
    var hourPropValue = typeof(Item).GetProperty("Hour" + i).GetValue(item);
    // Conditional code here
}

根据您的评论,现在据我所知。假设属性 Hour00..Hour23 保存整数值:

int day = DateTime.Today.Day;
for (int i=0; i<24; i++){
  int value = data[day].GetType().GetProperty(string.Format("Hour{0:00}",i)).GetValue(data[day], null);
}