代码之家  ›  专栏  ›  技术社区  ›  Sir Graystar

C动态引用循环中的对象

  •  1
  • Sir Graystar  · 技术社区  · 14 年前

    我不知道这是否可能。我要做的是引用一个数据表(和其他对象,但让它为一个工作会使其余的更容易)并将其用作参数,但我想在循环中这样做,以便我可以对每个数据表DT1、DT2、DT3等执行函数。类似的事情(尽管这显然不起作用):

    for (int i = 0; i <= max; i++)
    {
        Load("dt"+i);
    }
    

    这真的可以吗?

    4 回复  |  直到 14 年前
        1
  •  5
  •   Anton Gogolev    14 年前

    坚持你的一切 DataTable s到数组中:

    var dataTables = new[] { dt1, dt2, dt3 };
    foreach(var dt in dataTables)
        // ...
    
        2
  •  1
  •   Jason Webb    14 年前

    我建议使用Anton Gogolev建议的方法。不过,您可以根据自己的需要使用' System.Reflection 命名空间。下面是一个例子。注意到 DataTable 成员必须是 public 对于 GetField 工作。

    public DataTable dt0 = new DataTable();
    public DataTable dt1 = new DataTable();
    public DataTable dt2 = new DataTable();
    
    public void findall()
    {
        DataTable temp;
        for (int i = 0; i < 3; i++)
            temp = (DataTable)this.GetType().GetField("dt" + i.ToString()).GetValue(this);
    }
    
        3
  •  0
  •   Nelson Rothermel    14 年前

    是的,这是可能的。如果你能在编译时引用它们,你可以把它们放入一个数组中,就像安东说的那样。否则,您必须使用反射来处理它们。无论如何,数据表实例都必须存储在某个变量中的某个地方。你能多给点上下文吗?数据表来自哪里?

        4
  •  0
  •   Andrew Lewis    14 年前
    foreach( var dt in new List<int>() { dt1,dt2,dt3,dt4,dt5 })
    {
     // do something   
    }