【发布时间】:2014-09-30 18:32:04
【问题描述】:
当我读到这个问题时 Deep Null checking, is there a better way?
还有这个
C# elegant way to check if a property's property is null
假设我要检查所有属性是否不为空,或者是否有任何属性不为空。(浅属性)
SearchCriteria 对象:
Keyword (Searches Name and Description) != null ||
SectorId != null ||
IndustryId != null ||
HasOption != null ||
HasFutures != null ||
30 properties to go...
正如我们所见,语法有点难以阅读。我想要类似的东西
SearchCriteria
.Has(criteria => criteria.Keywork)
.Has(criteria => criteria.SectorId)
.Has(criteria => criteria.HasOption)
.etc
(如果我们希望以上所有属性都不为空)
或
SearchCriteria
.Has(criteria => criteria.Keywork).Or()
.Has(criteria => criteria.SectorId).Or()
.Has(criteria => criteria.HasOption).Or()
.etc
(如果我们想要任何属性不为空)
或
SearchCriteria
.Has(criteria => criteria.Keywork).Or()
.Has(criteria => criteria.SectorId)
.Has(criteria => criteria.HasOption)
.etc
(如果我们希望关键字或 SectorId 有值并且 HasOption 有值。
那么,我们在 codeplex 上是否有任何现成的项目?或者任何可以结合深空检查和浅空检查的优雅方法?
【问题讨论】:
-
如果它是一个 blittable
struct你可以检查内存是否归零,但我不确定这算不算“优雅”;它已从 C# 中删除,足以算作比您拥有的更丑陋。 -
@JonHanna 它还取决于像
int foo这样具有值0的字段是否应该像null一样 -
我建议您阅读此内容...blogs.encodo.ch/news/view_article.php?id=167 优雅代码 vs 简洁代码 “聪明是美妙的,但您最终可能会严重限制愿意或能够从事此工作的人数代码。”
-
@MarcGravell 您可以检查相关八位位组的适当子集,但这只会增加所说的丑陋。
-
@PaulZahra:给文章投 1 票,很有帮助。有时代码的语义不是我们所需要的。
标签: c#