我正在做一个项目,我发现我在很多地方检查以下内容:
I'm working on a project where i find i'm checking for the following in many, many places:
if(item.Rate == 0 || item.Rate == null) { }
更令人好奇的是,检查这两种情况的最佳方法是什么?
more as a curiousity than anything, what's the best way to check for both cases?
我添加了一个辅助方法,它是:
I've added a helper method which is:
public static bool nz(object obj)
{
var parsedInt = 0;
var parsed = int.TryParse(obj.ToString(), out parsedInt);
return IsNull(obj) || (parsed && parsedInt == 0);
}
有更好的方法吗?
我喜欢 if ((item.Rate ?? 0) == 0) { }
更新 1:
你也可以定义一个扩展方法,如:
You could also define an extension method like:
public static bool IsNullOrValue(this double? value, double valueToCheck)
{
return (value??valueToCheck) == valueToCheck;
}
像这样使用它:
if(item.IsNullOrValue(0)){}//但你没有从中得到太多
if(item.IsNullOrValue(0)){} // but you don't get much from it
这篇关于可空类型:在 c# 中检查空值或零的更好方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
如何检查字符串是否为空How to check if String is null(如何检查字符串是否为空)
Equals(item, null) 或 item == nullEquals(item, null) or item == null(Equals(item, null) 或 item == null)
覆盖 == 运算符.如何与空值进行比较?Overriding == operator. How to compare to null?(覆盖 == 运算符.如何与空值进行比较?)
成员访问中的问号在 C# 中是什么意思?What does the question mark in member access mean in C#?(成员访问中的问号在 C# 中是什么意思?)
||(或)C# 中的 Linq 运算符The || (or) Operator in Linq with C#(||(或)C# 中的 Linq 运算符)
C# 空合并运算符等效于 C++C# null coalescing operator equivalent for c++(C# 空合并运算符等效于 C++)