在Lambda Expression C#中使用IF语句

时间:2017-05-01 13:11:35

标签: c# lambda

我一直在尝试使用lambda表达式中的statment而不是C#中的三元运算符,因为这是我的指示。我确实尝试过一些东西,但它仍然给我一个错误。任何人都可以帮我解决这个问题吗?

这是我的代码:

//name: DisplayData
//data in: none
//data out: string that contains the id, name, tuition, and FT or PT based on fulltime status
//description: format with tabs between. Use conditional IF and lambda operator
public string DisplayData() => id + "\t" + name + "\t" + (if(fulltime == true) "FT";
    else "PT";) + "\t" + tuition.ToString("c");

2 个答案:

答案 0 :(得分:3)

你在那里没有lambda表达,你有一个表达身体的成员,也就是说你特意表明你将使用表达而不是语句作为方法的定义。

顾名思义,if语句是一个语句。它不是表达。如果您想使用语句作为方法的主体,那么您不能使用表达式身体成员,您需要使用更传统的语法来定义方法。此外,您使用实际的if语句本身作为表达式bodied成员中的表达式; if语句无法解析为值,因为它不是表达式,因此您无法使用它,就好像它有值一样。< / p>

答案 1 :(得分:2)

您无法避免使用三元运算符,因为您无法使用statements inside expressions

您可以使用条件表达式构造所需的值。还要考虑使用字符串插值语法以获得更好的可读性:

public string DisplayData() => $"{id}\t{name}\t{(fulltime ? "FT" : "PT")}\t{tuition:c}";

或者,您可以使用formatting trick数字来格式化bool值,方法是使用其哈希码:

public string DisplayData() => $"{id}\t{name}\t{fulltime.GetHashCode():FT;0;PT}\t{tuition:c}"