C# 如何从列表中获取Sum()<&燃气轮机;取决于字符串[]数组的顺序

C# 如何从列表中获取Sum()<&燃气轮机;取决于字符串[]数组的顺序,c#,arraylist,sum,console-application,C#,Arraylist,Sum,Console Application,我试图根据数组的字符串[]获取列表的Sum()。我尝试了以下方法: private static List<int> sum = new List<int>(); private static int total = 0; private static string[] ErrorCode = new string[] {"@", "-2", "!"}; private static void Score(string[] ErrorCode) { if

我试图根据数组的
字符串[]
获取
列表的
Sum()
。我尝试了以下方法:

private static List<int> sum = new List<int>();
private static int total = 0;
private static string[] ErrorCode = new string[] {"@", "-2", "!"};

private static void Score(string[] ErrorCode)
{
        if (ErrorCode.Contains("@"))
        {
            sum.Add(1);
        }
        if (ErrorCode.Contains("-2"))
        {
            sum.Add(-2);
        }

        if (ErrorCode.Contains("!"))
        {
            sum.Clear();
            sum.Add(5);
        }

        total = sum.Sum(); 
        //This prints total = 5
}
如何实现动态打印任一值的结果?因此,这将取决于数组是如何使用错误代码输入的,而不是评分方法
if语句

非常感谢你的帮助

不要使用
Contains
当订单重要时,按顺序处理每个命令:

private static void Score(string[] ErrorCode) {
    total = 0;
    foreach (var ec in ErrorCode) {
        switch (ec) {
            case "@":
                total += 1;
                break;
            case "-2":
                total += -2;
                break;
            case "!":
                total = 5;
                break;
        }
    }
}
您还应该让
Score
使用局部变量(
sum
?),并在完成后返回结果。您应该将
ErrorCode
命名为
ErrorCode
,因为它包含多个代码,所以:

private static int Score(string[] errorCodes) {
    var sum = 0;
    foreach (var ec in errorCodes) {
        switch (ec) {
            case "@":
                sum += 1;
                break;
            case "-2":
                sum += -2;
                break;
            case "!":
                sum = 5;
                break;
        }
    }

    return sum;
}

total = Score(ErrorCodes);

不要使用
Contains
当订单重要时,按顺序处理每个命令:

private static void Score(string[] ErrorCode) {
    total = 0;
    foreach (var ec in ErrorCode) {
        switch (ec) {
            case "@":
                total += 1;
                break;
            case "-2":
                total += -2;
                break;
            case "!":
                total = 5;
                break;
        }
    }
}
您还应该让
Score
使用局部变量(
sum
?),并在完成后返回结果。您应该将
ErrorCode
命名为
ErrorCode
,因为它包含多个代码,所以:

private static int Score(string[] errorCodes) {
    var sum = 0;
    foreach (var ec in errorCodes) {
        switch (ec) {
            case "@":
                sum += 1;
                break;
            case "-2":
                sum += -2;
                break;
            case "!":
                sum = 5;
                break;
        }
    }

    return sum;
}

total = Score(ErrorCodes);

为了让读者清楚,你能把输入、你得到的输出和你想要得到的输出放在一起吗。我知道你有这方面的信息,只需要读几遍就明白了it@MichaelRandall当然,我会编辑问题以显示第二种情况。为了让读者清楚,你能把输入、你得到的输出和你想要得到的输出放在一起吗。我知道你有这方面的信息,只需要读几遍就明白了it@MichaelRandall当然,我将编辑问题以显示第二个案例