“&安培;”总是返回false

时间:2014-08-01 12:45:33

标签: c# foreach

我想检查一个数组中的某个值是否小于10且大于1.问题是当我运行我的代码时,它总是返回-1,如下例所示。我做错了什么?

int[] note = new int[5] {2, 3, 4, 5};
foreach (int element in note)
{
    if(element <= 10 & element >= 0)
        suma = suma + element;
    else    
        return -1;
}

1 个答案:

答案 0 :(得分:1)

你忘记了suma的回归。到那时离开函数的唯一方法是返回-1。

同样如果一个元素与您的条件不匹配,它将返回-1

    int[] note = new int[4] {2, 3, 4, 5}; 

    int suma = 0;

    foreach (int element in note)
    {
        if (element <= 10 & element >= 0)
            suma = suma + element;
        // You may want to remove the following part
        else    
            return -1; 
    }

    return suma; // This was missing

这是在没有-1的情况下运行的代码的小提琴 https://dotnetfiddle.net/t3uL1G

您也可以使用Linq仅汇总符合您条件的所有元素:

using System.Linq; 
...
int suma = note.Where(e => e < 11 && e > 0).Sum(); //  + 0 is redundant.