C#最佳实践 - 转换int时的最佳实践是什么?到int

时间:2016-11-24 11:32:22

标签: c# stored-procedures repository nullable

我从一个存储过程从数据库进入可以为空的int,我知道它不会有空值。我做了吼叫:

    public List<EngineerDetails> GetCarouselEngineerDetailsList(int customerID)
    {
        using (var db = new MainEntities80())
        {
            var foo0= db.procedure().Select(s => new fooo()
            {
                foo= s.foo,
                foo2 = s.foo2,
                foo3 = s.foo3 ,
                foo4 = s.foo4 ,
                x = s.CurrentJobId.Value
            }).ToList();
            return foo0;
        }
    }

但我想知道,虽然我知道价值永远存在。在获得价值之前检查是否是好的做法。也许有一个转折表达。 或者因为我们知道如果我们忘记检查它不会为空?

4 个答案:

答案 0 :(得分:4)

如果InvalidOperationException实际上为null,则会抛出s.CurrentJobId。对于世界的情况来说,这几乎总是最好的结果。世界并不是我期望它的方式&#34;因此,完全按原样使用代码是有意义的。

答案 1 :(得分:0)

if (s.CurrentJobID.HasValue)
{
    CurrentJobID = s.CurrentJobID.Value
}

答案 2 :(得分:0)

你可以这样做:

int result = s.CurrentJobId?? Int32.MinValue;

这将确保将x的值赋给result,但如果s.CurrentJobId为null,则将为其分配Int32.MinValue。

它将阻止抛出异常,并且您可以通过检查Int32.MinValue来确认它是否为null。

但是,如果该值确实应该永远不为null,则抛出异常并快速失败是更好的选择。

答案 3 :(得分:-2)

您可以使用CurrentJobID = s.CurrentJobID.GetValueOrDefault()

如果遇到NULL,则会生成基础类型的默认值,对于数字,该值始终为0.

或者,如果您想要一个'例外'值,例如-1,那么您可以使用CurrentJobID = s.CurrentJobID.GetValueOrDefault(-1)执行此操作。