如果那么简单然后使用? :

时间:2014-10-23 10:42:32

标签: c#

我怎么写这个?

match = p.PType.Type == EPType.Umbr
                        ? matchShouldBeThis
                        : (p.IsShare == true ? matchShouldBeThisInstead);

编译器抱怨它想要另一个:

基本上是a 一世 然后 否则如果

2 个答案:

答案 0 :(得分:2)

首先使用简写语法编写代码会有所帮助,然后查看是否可以使用?:“简化”。

_Iwantthisinsteadwant p.PType.Type == EPType.Umbr时,您似乎需要p.IsShare == true,否则您需要thisone

这将成为:

if (p.PType.Type == EPType.Umbr && p.IsShare)
{
    match = _Iwantthisinsteadwant;
}
else
{
    match = thisOne;
}

这可以缩短为:

match = (p.PType.Type == EPType.Umbr && p.IsShare)
    ? _Iwantthisinstead
    : thisOne;

答案 1 :(得分:0)

您的第二个条件缺失false part

match = p.PType.Type == EPType.Umbr ? thisOne : (p.IsShare ? _Iwantthisinstead : false);