场景1:使用?定义可空类型
众所周知,C#中的值类型是不可以为null的,如果必须为null,则需要将变量定义为可空类型,如下所示:
场景2:使用?检查null值
一般我们写代码时,为了避免代码出现空异常System.NullReferenceException,都会写很多的判断语句
- Address address = null;
- if (address != null)
- {
- Console.WriteLine(address.PostCode);
- }
- Console.ReadLine();
在C#的新语法中,我们可以通过?来检查null值,这样可以减少很多不必要的判断
- Address address = null;
- var postCode = address?.PostCode;
- Console.WriteLine(postCode);
- Console.ReadLine();
场景3:使用??设置默认值
在写代码过程中,经常会碰到当变量为null值设置默认值的情况,原来的写法可能是这样的:
- int? age = null;
- if (!age.HasValue)
- {
- age = 18;
- }
- Console.WriteLine(age); // 输出18
- Console.ReadLine();
在C#的新语法中,可以通过??来设置默认值,如果变量值为null,取??右边的值,如果不为null,取变量的值
- int? age = null;
- Console.WriteLine(age ?? 18); // 输出18
- age = 20;
- Console.WriteLine(age ?? 18); // 输出20
- Console.ReadLine();