继续作为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_expression
是continue
,但在Visual Studio 2015中,我看到了给定区域的以下错误:
继续
表达式术语"continue"无效
语法错误,":"应为
表达式术语"continue"无效
预期
:
预期
:预期
在这种类型的If/Else
中可以使用continue
吗?如果没有,有什么原因吗?
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;