我试图基于使用? :语法的条件添加到一个列表或另一个列表,这在c#中是可能的,我使用的语法不能编译
List<int> Negatives = new List<int>();
List<int> Positives = new List<int>();
foreach (int number in numbers)
{
(number >= 0) ? Negatives.Add(number) : Positives.Add(number);
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 13
条件运算符计算一个表达式或其他表达式来计算值.它不执行void返回方法.
您可以在此处使用条件运算符来决定要添加到的列表:
(number >= 0 ? positives : negatives).Add(number);
Run Code Online (Sandbox Code Playgroud)
或者更清楚:
var listToAddTo = number >= 0 ? positives : negatives;
listToAddTo.Add(number);
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用LINQ代替,以获得乐趣:
// This replaces the whole code
var lookup = numbers.ToLookup(x => x >= 0);
var positives = lookup[true].ToList();
var negatives = lookup[false].ToList();
Run Code Online (Sandbox Code Playgroud)
甚至,更严格地说:
var lookup = numbers.ToLookup(Math.Sign);
var positives = lookup[1].ToList();
var zeroes = lookup[0].ToList();
var negatives = lookup[-1].ToList();
Run Code Online (Sandbox Code Playgroud)