在C#中,我有一些值为>的十进制变量0和一些等于0.我从C#winform上的不同文本框的数量中得到这些小数。
计算其中有多少人具有价值的最佳做法是> 0?
如果计数是> 12,具有最低值的变量(仅非零值)应更改为0
答案 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;
}
}
它使用集合。不过,我建议你也使用它们。使用大量编号的不同值是代码气味,我猜想它几乎不太方便。