相关疑难解决方法(0)

更清洁的方法在C#中进行空检查?

假设,我有这个界面,

interface IContact
{
    IAddress address { get; set; }
}

interface IAddress
{
    string city { get; set; }
}

class Person : IPerson
{
    public IContact contact { get; set; }
}

class test
{
    private test()
    {
        var person = new Person();
        if (person.contact.address.city != null)
        {
            //this will never work if contact is itself null?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Person.Contact.Address.City != null (这可以检查City是否为空.)

但是,如果Address或Contact或Person本身为null,则此检查将失败.

目前,我能想到的一个解决方案是:

if (Person != null && Person.Contact!=null && Person.Contact.Address!= null && Person.Contact.Address.City != …
Run Code Online (Sandbox Code Playgroud)

c# null .net-4.0 .net-4.5

180
推荐指数
9
解决办法
8万
查看次数

深度检查,是否有更好的方法?

注意:这个问题是在引进之前要求.?在C#6/Visual Studio的2015年运营商.

我们都去过那里,我们有像cake.frosting.berries.loader这样的深层属性,我们需要检查它是否为空,所以没有例外.要做的是使用短路if语句

if (cake != null && cake.frosting != null && cake.frosting.berries != null) ...
Run Code Online (Sandbox Code Playgroud)

这不是很优雅,也许应该有一种更简单的方法来检查整个链,看看它是否出现了null变量/属性.

是否可以使用某种扩展方法或者它是一种语言功能,还是只是一个坏主意?

c# null

128
推荐指数
6
解决办法
2万
查看次数

标签 统计

c# ×2

null ×2

.net-4.0 ×1

.net-4.5 ×1