语法有助于将.Length与字符串变量一起使用

时间:2016-04-23 02:25:07

标签: c# wpf

我使用了多个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循环,我试图通过只写一次来避免这种情况。

3 个答案:

答案 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]);
            }
        }