继续作为Concise If Else中的第一个语句

本文关键字:第一个 语句 Else If Concise 继续 | 更新日期: 2023-09-27 17:59:42

我在foreach循环中有以下if-else语句:

string date = GetDate(item)
if (date == null)
{
    continue;
}
else
{
    article.Date = date;
}

我想用? ::以简洁的格式写这篇文章

string date = GetDate(item)
date == null ? continue : article.Date = date;

据我所知,这应该是有效的,因为它的格式是condition ? first_expression : second_expression;,其中first_expressioncontinue,但在Visual Studio 2015中,我看到了给定区域的以下错误:

继续

表达式术语"continue"无效

语法错误,":"应为

表达式术语"continue"无效

预期

预期

:预期

在这种类型的If/Else中可以使用continue吗?如果没有,有什么原因吗?

继续作为Concise If Else中的第一个语句

https://msdn.microsoft.com/en-gb/library/ms173144.aspx

表达式是由一个或多个操作数和零个或更多个运算符组成的序列,这些运算符可以求值为单个值、对象、方法或命名空间

continue不是表达式

您的代码正试图将continue分配给您的"日期"变量。这没有道理。恐怕没有办法使用三元运算符来实现您想要实现的目标。

好吧,

string date = GetDate(item)
date == null ? continue : article.Date = date;

有条件?:操作员必须返回一些东西,您可以将其读取为:

           // if(smth) { return smth} else { return smthElse; }
var result = a ? b : c;

显然,您不能return continue,因为它不是一个值。

如果返回的结果为null,则可以指定相同的值,并使用null合并运算符进行检查。假设循环中没有进一步的操作,则可以将此代码重构为以下内容:

article.Date = GetDate(item) ?? article.Date;

试试这个,使用default,如果日期是null,则可以将默认时间1/1/0001 12:00:00 AM值添加到变量date

date == null ? default(DateTime): article.Date = date;