开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C# ?和??使用讲解

简介: 原文:C# ?和??使用讲解 场景1:使用?定义可空类型 众所周知,C#中的值类型是不可以为null的,如果必须为null,则需要将变量定义为可空类型,如下所示: int? age = null; 场景2:使用?检查null值 一般我们写代码时,为了避免代码出现空异常System.
+关注继续查看
原文:C# ?和??使用讲解

场景1:使用?定义可空类型

众所周知,C#中的值类型是不可以为null的,如果必须为null,则需要将变量定义为可空类型,如下所示:

int? age = 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();

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SDK使用指南
针对参数设计以及SDK读写方面进行说明
298 0
libcurl使用示例
远程下载文件,并将http 头信息存放内存中以及文件大小等相关信息: 1 #include 2 #include 3 #include 4 #include 5 6 struct MemoryStruct { 7 char* memory; 8 ...
856 0
C# 抽象类理解与使用
一、一码当先---代码清单 抽象基类People /// /// 抽象基类 /// public abstract class People { public string Name...
600 0
C#迭代器的使用
原文地址:http://msdn.microsoft.com/zh-cn/library/65zzykke.aspx   创建迭代器最常用的方法是对 IEnumerable 接口实现 GetEnumerator 方法,例如: public System.Collections.IEnumerator GetEnumerator(){    for (int i = 0; i GetEnumerator 方法的存在使得类型成为可枚举的类型,并允许使用 foreach 语句。
578 0
使用C++的接口
#include "stdafx.h"using namespace std;//abstract interfacesinterface IX...{    virtual void _stdcall Fx1()=0;    virtual void _stdcall Fx2()=0;};interface IY...{    virtual void _stdcall Fy1()=0
800 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载