C#,如何计算具有值的变量> 0

时间:2012-09-19 11:52:29

标签: c# winforms

在C#中,我有一些值为>的十进制变量0和一些等于0.我从C#winform上的不同文本框的数量中得到这些小数。

计算其中有多少人具有价值的最佳做法是> 0?

如果计数是> 12,具有最低值的变量(仅非零值)应更改为0

2 个答案:

答案 0 :(得分:6)

不要使用长的小数列表,使用它们的数组:

decimal[] values = new decimal[17];
/*Populate the values array with data*/
int CountOfMoreThanZero = values.Count(v => v > 0);

答案 1 :(得分:0)

它不是一个屡获殊荣的面向对象软件工程,但它应该做的工作:

static void Main(string[] args)
{
    var seq = Enumerable.Range(0, 12).Select(i => (decimal)i);
    Console.WriteLine(GetGreaterThanZero(seq));

    var arr = seq.ToArray();
    SetMinNull(arr);
    foreach(var n in arr)
        Console.WriteLine(n);
}

static int GetGreaterThanZero(IEnumerable<decimal> numbers)
{
    return numbers.Count(n => n > 0);
}

static void SetMinNull(decimal[] numbers)
{
    decimal min = numbers.Min();

    // edit: credits to daniel for this loop
    for(int i = 0; i < numbers.Length; i++)
    {
        if(numbers[i] == min) numbers[i] = 0;
    }
}

它使用集合。不过,我建议你也使用它们。使用大量编号的不同值是代码气味,我猜想它几乎不太方便。