将值分配给多个变量

时间:2016-12-15 01:05:41

标签: c# string

我有一个字符串myString,它可以包含由逗号分隔的可变数量的对,例如:“a = 1,b = 2,c = 3”或“c = 5,b = 4”或“t = 12" 。 我还有一个集合整数变量,名为a,b,c,...,z,都设置为0。 我想分析myString并将字符串中的值分配给每个变量。 我只能使用switch和case来做一个效率低下的方法(例如,如果myString包含'a',则提取'a'的值并将其分配给名为'a'的变量)。有关如何为此操作编写更好代码的任何想法吗?

    void Test(string myString)
    {
        int a, b, c, d;
        a = b = c = d = 0;
        string[] varNames = {"a", "b", "c", "d"};
        for(int i = 0; i < varNames.Length; i++)
        {
            if(myString.IndexOf(varNames[i]) >= 0)
            {
                VariableWhoseNameIs(varNames[i]) = 3;
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

为什么变量名称很重要?您可以将对存储在

Dictionary<string, int>



Dictionary<string, int> values= new Dictionary<string, int>()
{
    { a, 1}
    { b, 2}
};

您想要检索的时间

var value = values[myString].value;

答案 1 :(得分:1)

你可以这样做:

void Test(string myString)
{
    int a, b, c, d;
    a = b = c = d = 0;

    var assign = new Dictionary<string, Action<int>>()
        {
            { "a", n => a = n },
            { "b", n => b = n },
            { "c", n => c = n },
            { "d", n => d = n },
        };

    string[] varNames = { "a", "b", "c", "d" };
    for (int i = 0; i < varNames.Length; i++)
    {
        if (myString.IndexOf(varNames[i]) >= 0)
        {
            assign[varNames[i]](3);
        }
    }
}

但它仍然与案例陈述非常相似。唯一的区别是您在运行时构建分配,因此您可以更灵活地创建字典 - 即在代码中的多个位置构建。