C# 在Lambda表达式C中使用IF语句#

C# 在Lambda表达式C中使用IF语句#,c#,lambda,C#,Lambda,我一直在尝试在lambda表达式中使用if语句,而不是在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

我一直在尝试在lambda表达式中使用if语句,而不是在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");

不能避免使用三元运算符,因为不能使用

可以使用条件表达式来构造所需的值。还考虑使用字符串插值语法来提高可读性:

public string DisplayData() => $"{id}\t{name}\t{(fulltime ? "FT" : "PT")}\t{tuition:c}";
或者,您可以使用for numbers通过其哈希代码格式化
bool
值:

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

这里没有lambda表达式,而是有一个表达式体成员,也就是说,您明确表示要使用表达式而不是语句作为方法的定义


顾名思义,
if
语句就是一个语句。这不是一个表达。如果希望使用语句作为方法的主体,则不能使用表达式体成员,需要使用更传统的语法来定义方法。此外,您正在使用实际的
if
语句本身作为表达式体成员中的表达式;
if
语句不能解析为值,因为它不是表达式,所以不能像使用值一样使用它。

经典且可读性更强的函数定义有什么问题?这不是lambda,这只是一个表达式体成员。请正确格式化您的代码,并尽可能明确。我有一种感觉,您被告知放弃传统定义的表达式体方法,但这只是一个猜测,因为不清楚。我相当确定您需要在字符串内插的三元数周围加括号<代码>公共字符串DisplayData()=>$“{id}\t{name}\t{(全职?“FT”:“PT”)}\t{tutory:c}”这不应该按您现有的方式生成。@Botonomous Oops,对不起,我将您的代码复制到了VS中,这就是为什么我没有看到错误。非常感谢。