C# では、値が 0 を超える 10 進変数と 0 に等しい 10 進変数がいくつかあります。これらの 10 進値は、C# winform のさまざまなテキスト ボックスの数から取得します。
それらのうち、値が 0 より大きい数を数えるためのベスト プラクティスは何ですか?
カウントが 12 を超える場合、最小値を持つ変数 (ゼロ以外の値のみ) を 0 に変更する必要があります。
小数の長いリストを使用しないでください。それらの配列を使用してください。
decimal[] values = new decimal[17];
/*Populate the values array with data*/
int CountOfMoreThanZero = values.Count(v => v > 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;
}
}
コレクションを使用します。ただし、それらも使用することをお勧めします。番号の付いたさまざまな値をたくさん使うのはコードのにおいがするし、あまり便利ではないと思います。