验证 null object
Validate null object
为了验证模型是否为空,我使用了这样的东西:
if (model is null || !model.Any()) return this;
但在最近的微软会议上,我看到有人使用类似的东西:
if(model is { })
我尝试使用它,但总是 return 正确(如果 object 是否为空)
所以我的问题是。有没有一种新的方法来检查模型是否为空?
括号 { }
的正确用法是什么
注意:我在谷歌上搜索了那个括号,但没有找到任何东西。此致
您可以使用通用扩展方法来检查您的对象是否为 null。
尝试:
public static bool IsNullOrEmpty<T>(this IEnumerable<T> source) {
return source?.Any() != true;
}
另一种检查 NullOrEmpty
的方法是将 Count()
强制转换为 int?
。然后我们可以比较 GetValueOrDefault
和 0
:
的结果
if((model?.Count).GetValueOrDefault() == 0) return this;
工作原理:
- 因为
?.
运算符将 return null
如果左侧是 null
,并且 Count
return 是 int
,(model?.Count)
的结果是Nullable<int>
。
- 如果
model
不是null
,return方法returns Count
的值,否则returns default(int)
(即 0
)。
- 这样如果
model
是null
,条件returns 0
为了验证模型是否为空,我使用了这样的东西:
if (model is null || !model.Any()) return this;
但在最近的微软会议上,我看到有人使用类似的东西:
if(model is { })
我尝试使用它,但总是 return 正确(如果 object 是否为空)
所以我的问题是。有没有一种新的方法来检查模型是否为空?
括号 { }
注意:我在谷歌上搜索了那个括号,但没有找到任何东西。此致
您可以使用通用扩展方法来检查您的对象是否为 null。
尝试:
public static bool IsNullOrEmpty<T>(this IEnumerable<T> source) {
return source?.Any() != true;
}
另一种检查 NullOrEmpty
的方法是将 Count()
强制转换为 int?
。然后我们可以比较 GetValueOrDefault
和 0
:
if((model?.Count).GetValueOrDefault() == 0) return this;
工作原理:
- 因为
?.
运算符将 returnnull
如果左侧是null
,并且Count
return 是int
,(model?.Count)
的结果是Nullable<int>
。 - 如果
model
不是null
,return方法returnsCount
的值,否则returnsdefault(int)
(即0
)。 - 这样如果
model
是null
,条件returns0