繁体   English   中英

C#循环中动态引用对象

[英]C# Dynamically reference objects in loop

我不知道这是否可行。 我想做的是引用一个DataTable(和其他对象,但是让它工作一个将使其余工作变得容易)并将其用作参数,但是我想循环执行此操作,以便可以执行与每个DataTable dt1,dt2,dt3等一起使用。类似这样的东西(尽管这显然不起作用):

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

这实际上可行吗?

将所有DataTable放入一个数组中:

var dataTables = new[] { dt1, dt2, dt3 };
foreach(var dt in dataTables)
    // ...

我建议使用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);
}

是的,有可能做。 如果可以在编译时引用它们,则可以将它们粘贴在数组中,如Anton所说。 否则,您必须使用Reflection与他们一起工作。 无论哪种方式,DataTable实例都必须存储在某个变量中的某个位置。 您能否再提供一些背景信息? 数据表来自哪里?

foreach( var dt in new List<int>() { dt1,dt2,dt3,dt4,dt5 })
{
 // do something   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM