这是我目前的方法,但是我有时会不得不处理这个问题,我想知道是否还有更优雅的方法。
我有:long? LoadEntityId
字段。我有一种方法,可以将其用作参数:
private bool IsUsedInProduction(long? loadEntityId)
问题是当
LoadEntityId
实际上为空时,我得到Nullable object must have a value.
我现在要做的是:
if ((byte)cboStatus.SelectedValue == 10
&& LoadEntityId.HasValue
&& IsUsedInProduction(LoadEntityId.Value))
但是我认为应该有更好的方法来解决这个问题。
压力
似乎我的解释不够清楚,所以问题是如果我:
if ((byte)cboStatus.SelectedValue == 10
&& IsUsedInProduction(LoadEntityId.Value))
(删除LoadEntityId.HasValue检查),当LoadEntityId实际上为null时,如果我离开它,我会得到异常-好吧,我只是在寻找一种无需此检查就能使我的代码工作的方法。
最佳答案
您使用正确的方法。
有三种选择:
1)检查loadEntityId.HasValue,然后使用loadEntityId.Value(现在使用什么)
2)使用loadEntityId.GetValueOrDefault()
if ((byte)cboStatus.SelectedValue == 10
&& IsUsedInProduction(loadEntityId.GetValueOrDefault()))
3)使用??算子
if ((byte)cboStatus.SelectedValue == 10
&& (IsUsedInProduction(loadEntityId ?? 0))