欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#NULL条件运算符

程序员文章站 2022-03-20 10:20:26
C#6.0新增的特性 NULL条件运算符 ?. 之前我们在需要判断某个对象是否为空的是这样的 如果我们不这样判断的话,那么你就会得到一个 System.NullReferenceException 错误, 当然你也可以使用三元运算符 string str=person == null ? null ......

c#6.0新增的特性 null条件运算符 ?.

 

之前我们在需要判断某个对象是否为空的是这样的

person per = null;

            if (per != null)
            {
                console.write("");
            }

如果我们不这样判断的话,那么你就会得到一个 system.nullreferenceexception  错误,

C#NULL条件运算符

 

当然你也可以使用三元运算符

string str=person == null ? null :person.name 

但是在c#6.0的时候推出 null条件运算符,这样就使我们少写了很多代码,增加了我们很多的工作效率

?. null条件运算符

 

 person per = null;


            string name = per?.name;

如果我们这样写的话,同样也可以判断是否为空,代替了if的判断和简化了三元运算符的操作

例子:

我们尝试一下,在一个集合中

  list<person> person = new list<person>()
            {
                new person{ name="张三",age=12},
                new person{ name="李四",age=12},
                new person{ name=null,age=13},
                new person{ name="张三",age=12},
            };

我们需要查找姓是李的人,如果我们不使用null条件运算符,结果是..

C#NULL条件运算符

不出意料,因为name中存在null值,所以得到了一个system.nullreferenceexception 

这次我们加上null条件运算符,结果...

C#NULL条件运算符

加上null条件运算符之后,返回类型发生了改变,变成了nullable<t>,如果我们还需要原来的类型,只需要和空运算符一起使用就可以了

因为返回的是bool类型,那我们看一下false返回的是什么

C#NULL条件运算符

就会返回符合条件的值

如果为true又会返回什么呢

C#NULL条件运算符

我们可以清晰的可以看到,为true的时候,不仅返回符合条件的数据,同时也返回了name为空的值

 ?[

null运算符不但可以使用?.访问对象的属性和方法,还可以使用?[监测数组或包含索引器的对象是否为空

int[] are = new int[5] { 2, 3, 5, 7, 4 };

            int? value = are?.length;

            int? result = are?[0];

C#NULL条件运算符

null条件运算符返回的类型是nullable<t>,我们不想要这样的类型的话需要配合 ?? 空运算符使用

?? 空运算符

int[] are = new int[5] { 2, 3, 5, 7, 4 };

            int value = are?.length??0;

            int result = are?[0]??0;