我使用了多个case语句/数组,尽管为了清晰起见我只发布了1个。
combobox.SelectedIndex
是根据typeUnits
值设置的,用于选择要运行的案例。
在我将示例中的变量"lengthUnits"
设置为字符串lengthUnits.Length
的情况下,该字符串是包含3个项目的数组的名称。
我希望for循环使用typeUnits.Length
运行,但代码正在处理typeUnits.Text
,有人可以指出我正确的方向吗?
我尝试了typeUnits.ToString()
typeUnits.Content
string[] lengthUnits = new string[] {"Feet", "Miles", "Inches"};
int typeSelected = cmb_Select_Type.SelectedIndex;
switch (typeSelected)
{
case 1: typeUnits = "lengthUnits"; break; //Length Units
default: break;
}
for (int i = 0; i < typeUnits.Length; i++)
{
cmb_Select_From.Items.Add(typeUnits[i]);
}
,但没有任何作用。
@post
如果我不能让它工作,那么我需要为每个条件多次写for循环,我试图通过只写一次来避免这种情况。
答案 0 :(得分:1)
变量typeUnits
似乎被声明为字符串,因为您为其赋值"lengthUnits"
。然后,当您使用typeUnits.Length
时,您将获得字符串的长度(在这种情况下为11)。
变量typeUnits
应为string[]
类型,并按此分配:
string[] typeUnits;
switch (typeSelected)
{
case 1: typeUnits = lengthUnits; break; // No double quotes
default: break;
}
答案 1 :(得分:0)
让我们先谈谈你的方法。您正在尝试使用表示其名称的字符串来访问变量。只有当该变量是一个成员时才可以这样做,你可以用反射的力量来做到这一点。如果变量是本地的,那么反射也无法帮助你。
但是,在这个特定的代码片段中,它应该不是问题。为什么lengthUnits必须是一个字符串?不能是string []的类型吗?如果它是一个字符串数组,就像lengthUnits一样,你可以直接为它指定lengthUnits,并直接枚举lengthUnits。
如果有一个特殊原因,lengthUnits必须是一个字符串,您仍然可以使用Dictionary将名称映射到其实际值。由于你的问题没有反映你为什么要这样做,我现在暂不详细说明。
答案 2 :(得分:0)
下面的代码只是将正确的字符串[]分配给typeUnits。我添加了一个名为randomStringArray的第二个字符串[],以便您可以看到它如何与两种情况一起工作。
string[] lengthUnits = { "Feet", "Miles", "Inches" };
string[] randomStringArray = { "Test", "this", "please" };
string[] typeUnits;
int typeSelected = cmb_Select_Type.SelectedIndex;
switch (typeSelected)
{
case 1: typeUnits = lengthUnits;
break; //Length Units
case 2: typeUnits = randomStringArray;
break;
default: break;
}
if (typeUnits != null)
{
for (int i = 0; i < typeUnits.Length; i++)
{
cmb_Select_From.Items.Add(typeUnits[i]);
}
}