这是我目前的方法,但我不时要处理这个问题,我想知道是否有更优雅的方式.
我有:long? LoadEntityId田地.我有一个方法,我用它作为参数:
private bool IsUsedInProduction(long? loadEntityId)
Run Code Online (Sandbox Code Playgroud)
问题是,当LoadEntityId我实际上是null时,我得到了Nullable object must have a value.
我现在做的是:
if ((byte)cboStatus.SelectedValue == 10
&& LoadEntityId.HasValue
&& IsUsedInProduction(LoadEntityId.Value))
Run Code Online (Sandbox Code Playgroud)
但我认为应该有更好的方法来解决这个问题.
PS
在我的解释中,我似乎不够清楚所以问题在于,如果我:
if ((byte)cboStatus.SelectedValue == 10
&& IsUsedInProduction(LoadEntityId.Value))
Run Code Online (Sandbox Code Playgroud)
(当LoadEntityId实际为null时,删除LoadEntityId.HasValue检查)我得到异常,如果我离开它 - 好吧我只是想找到一种方法让我的代码在没有这个检查的情况下工作.
你使用正确的方法.
有三种选择:
1)检查loadEntityId.HasValue然后使用loadEntityId.Value(你现在使用的是什么)
2)使用loadEntityId.GetValueOrDefault()
if ((byte)cboStatus.SelectedValue == 10
&& IsUsedInProduction(loadEntityId.GetValueOrDefault()))
Run Code Online (Sandbox Code Playgroud)
3)使用?? 操作者
if ((byte)cboStatus.SelectedValue == 10
&& (IsUsedInProduction(loadEntityId ?? 0))
Run Code Online (Sandbox Code Playgroud)