在 C# 中动态创建变量
本文关键字:创建 变量 动态 | 更新日期: 2023-09-27 18:35:56
我正在尝试做这样的事情:
for (int i = 1; i < nCounter ; i++)
{
string dvName = "dv" + i.ToString();
System.Windows.Forms.DataGridView dvName = new DataGridView();
// other operations will go here..
}
正如你可以猜到的,我想做的是在i == 1
,创建一个名称为dv1
的DataGridView
,在i == 2
,创建一个名称为dv2
的DataGridView
,但我不能。
Visual Studio 波浪线说"一个名为 dvName 的局部变量已经在此范围内被破坏了"我还尝试了以下方法:
for (int i = 1; i <nCounter ; i++)
{
System.Windows.Forms.DataGridView dv & i = new DataGridView();
// other operations will go here..
}
但是VS再次弯曲,我希望你明白我想要完成什么。谁能建议我该怎么做?
你真正需要的是一个Dictionary<int, DataGridView> grids
。在 for 循环 ( grids[i] = new DataGridView();
) 中填充它,然后稍后使用所需的网格 ( grids[someCalculatedIndex]
)
希望这有帮助。
尝试一种数据结构,您可以在其中保存变量,例如字典等
System.Collections.Generic.Dictionary<string,System.Windows.Forms.DataGridView>
grids = new Dictionary<string,System.Windows.Forms.DataGridView>();
for (int i = 1; i <nCounter ; i++)
{
grids.Add("dv" + i.ToString(), new DataGridView());
}
// to work on grid 1
DataGridView grid1 = grids["dv1"];
// so on
所以你正在尝试动态创建变量名?那是不可能的。为什么不使用数组或列表(甚至字典)?还是只想设置控件的名称?
var list = new List<DataGridView>();
for (int i = 1; i <nCounter ; i++)
{
System.Windows.Forms.DataGridView dvName = new DataGridView();
dvName.Name = "dv" + i.ToString();
list.Add(dvName);
// other operations will go here..
}
foreach (var dv in list)
{
...do something...
}
DataGridView secondDv = list.Single(dv=>dv.Name == "dv2");
secondDv.DoSomething()
不清楚你想做什么...