C#使用条件执行代码?方法调用:方法调用

时间:2017-06-08 21:40:13

标签: c# .net collections

我正在尝试使用? :语法基于条件添加到一个列表或另一个列表,这是否可能在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);
}

2 个答案:

答案 0 :(得分:13)

条件运算符计算一个表达式或其他来计算值。它不执行返回void的方法。

您可以在此处使用条件运算符来决定要添加到的列表:

(number >= 0 ? positives : negatives).Add(number);

或者更清楚:

var listToAddTo = number >= 0 ? positives : negatives;
listToAddTo.Add(number);

当然,你可以使用LINQ来获取乐趣:

// This replaces the whole code
var lookup = numbers.ToLookup(x => x >= 0);
var positives = lookup[true].ToList();
var negatives = lookup[false].ToList();

甚至,更严格地说:

var lookup = numbers.ToLookup(Math.Sign);
var positives = lookup[1].ToList();
var zeroes = lookup[0].ToList();
var negatives = lookup[-1].ToList();

答案 1 :(得分:3)

条件表达式的结果和替代必须具有值; void-returns方法没有值。

使用if声明。