在分配之前检查值是否为null

时间:2015-06-02 11:58:51

标签: c#

所以我正在创建一个新对象并从其他函数设置其属性。我需要在应用值之前检查它们是否为null。我该如何处理?

Customer = new Customer (
     name = requestCall.Name, 
     age = requestCall.Age.ofType<DateTime>().DOB
    )

在申请之前,如何检查requestCall.Age或requestCall.Name是否为空?

5 个答案:

答案 0 :(得分:5)

根据您的情况,您可以使用ternary operator

name = requestCall.Name == null ? something : something_else

null coalesce operator

name = requestCall.Name ?? something

答案 1 :(得分:2)

变式1:

Customer = new Customer(
     name = requestCall.Name ?? "default name", 
     age = requestCall.Age == null ? (some default date) :  requestCall.Age.ofType<DateTime>().DOB
);

变式2:

Customer = requestCall == null ? null : new Customer(
     name = requestCall.Name, 
     age = requestCall.Age.ofType<DateTime>().DOB
);

当然,您可以使用if,在我看来,它更好:

Customer customer;
if (requestCall != null)
{
    customer = new Customer();
    if (requestCall.Name != null)
    {
        customer.Name = requestCall.Name;
    }
    // etc.
}
else
{
    customer = null;
}

答案 2 :(得分:1)

只需制作一个requestCall.IsValid()方法(恰当地命名为适合您的用法)并使用此方法验证您是否能够建立新客户。

我认为当您确定需要添加的其他内容时,逻辑会增长,这将减少您必须执行的更新量。

作为旁注:您可能希望创建一个以requestCall作为参数的构造函数。

答案 3 :(得分:0)

试试这个

Customer = new Customer (
     name = requestCall.Name ?? string.Empty, 
     age = requestCall.Age.ofType<DateTime>().DOB ?? DateTime.Now
    )

答案 4 :(得分:0)

将其作为

 requestCall.Name ?? "soome text", 

!string.IsNullOrEmpty(requestCall.Name) ? requestCall.Name : "soome text"

并将整数检查为null

 `age = requestCall.Age == null ? (default) :  requestCall.Age.ofType<DateTime>().DOB`