C#中单问号(?)和双问号(??)的用法整理

C#中单问号(?)和双问号(??)的用法整理

一、单问号(?)

在C#中,单问号(?)用来判断对象是否为null。如果对象为null,则返回null;否则返回对象的值。

1.1. 使用示例

int? num = null;
int? num2 = 7;

Console.WriteLine(num?.ToString()); // 输出null
Console.WriteLine(num2?.ToString()); // 输出7

二、双问号(??)

在C#中,双问号(??)用来提供默认值。如果左边的值为空,则返回右边的值;否则返回左边的值。

2.1. 使用示例

int? num1 = null;
int num2 = 7;

Console.WriteLine(num1 ?? 0); // 输出0
Console.WriteLine(num2 ?? 0); // 输出7

需要注意的是,双问号(??)只能在左边的值为null或者Nullable类型时使用。如果左边的值不为null或不是Nullable类型,则不能使用双问号(??)。

三、单问号和双问号的组合应用

3.1. 使用示例

int? num1 = null;

int num2 = num1 ?? 0;
Console.WriteLine(num2); // 输出0

string str1 = null;

string str2 = str1?.ToLower() ?? "Default";
Console.WriteLine(str2); // 输出Default

Contact contact = null;
string phone = contact?.PhoneNumber ?? "DefaultPhone";
Console.WriteLine(phone); // 输出DefaultPhone

在上述的代码示例中,我们使用了单问号和双问号的组合应用,来判断对象是否为null,并提供默认值。其中:

  • 示例1:当num1为null时,将num2的值设为默认值0;
  • 示例2:当str1为null时,将str2的值设为默认值"Default";
  • 示例3:当contact或PhoneNumber为null时,将phone的值设为默认值"DefaultPhone"。

四、注意事项

在使用单问号和双问号时,需要注意以下几点:

  • 单问号只能判断对象是否为null,不能提供默认值;
  • 双问号只能提供默认值,不能判断对象是否为null;
  • 组合应用时,左边的值必须为Nullable类型或可能为空的类型,右边的值必须与左边的类型相同或可以隐式转换为左边的类型;
  • 不要滥用单问号和双问号,过多的使用会使代码难以阅读和维护。

五、总结

本文介绍了C#中单问号和双问号的使用方法和注意事项,希望能对大家有所帮助。在实际的开发中,可以根据不同的场景选择合适的方式来使用单问号和双问号,提高代码的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中单问号(?)和双问号(??)的用法整理 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#中如何生成安装包

    生成安装包是软件开发中必不可少的一步,它可以让用户更方便地安装和使用我们的应用程序。下面是C#中如何生成安装包的完整攻略。 1. 创建一个新的Windows Forms应用程序 首先,在Visual Studio中创建一个新的Windows Forms应用程序。 2. 进行构建和调试 然后,我们需要进行通常的构建和调试过程,确保应用程序能够正常运行,并没有任…

    C# 2023年6月2日
    00
  • .Net WInform开发笔记(三)谈谈自制控件(自定义控件)

    针对“.Net WInform开发笔记(三)谈谈自制控件(自定义控件)”这篇文章,我来给您进行详细的讲解和说明。 一、文章简介及目的 该篇文章主要介绍自定义控件的基本概念和实现方法,旨在帮助读者了解自定义控件的开发流程和技巧,提高自己的WinForm控件开发能力。 二、文章内容分析 1.控件的基本结构和实现方法 作者首先讲解了控件的基本结构和实现方法,包括:…

    C# 2023年5月31日
    00
  • C#利用WebClient实现两种方式下载文件

    C#利用WebClient实现两种方式下载文件 下载文件是Web开发中的常见操作之一。在C#中,我们可以使用WebClient类来实现文件下载。WebClient类提供了两种下载文件的方式:同步和异步方式。下面我们来介绍这两种方式的具体实现方法。 同步方式下载文件 1. 创建WebClient对象 首先,我们需要创建一个WebClient对象。可以使用以下代…

    C# 2023年6月1日
    00
  • C#设计模式之Builder生成器模式解决带老婆配置电脑问题实例

    下面我将详细讲解C#设计模式之Builder生成器模式解决带老婆配置电脑问题实例的完整攻略。 什么是Builder生成器模式 Builder生成器模式是一种创建型设计模式,它将对象的构建和表示分离,使得同样的构建过程可以创建不同的表示,这样可以使得对象的构建更加灵活。Builder生成器模式一般涉及如下几个角色: Builder:抽象生成器,用于定义创建一个…

    C# 2023年6月1日
    00
  • c# 实现网页加载后将页面截取为长图片

    下面是C#实现网页加载后将页面截取为长图片的完整攻略。 1. 确定工具和库 要实现该功能,我们需要使用两个库,OpenQA.Selenium和Selenium.Support,前者是用于C#的Web自动化测试库,后者是一个Selenium的附加库。 另外,我们还需要下载Chrome浏览器驱动程序,它将允许我们使用我们自己的浏览器进行测试,并且提供截图等更多便…

    C# 2023年6月1日
    00
  • WinForm自定义函数FindControl实现按名称查找控件

    下面就为大家详细讲解WinForm自定义函数FindControl实现按名称查找控件的完整攻略。 一、问题描述 有时候我们需要在WinForm中查找某一个控件,但是因为控件嵌套的层次比较深,需要写很多层级查找的代码,而且这样写不太灵活,每次查找都需要改动代码。因此,我们需要自定义一个函数来实现按名称查找控件,提高效率,降低代码复杂度。如何实现按名称查找控件的…

    C# 2023年5月15日
    00
  • C#影院售票系统毕业设计(3)

    “C#影院售票系统毕业设计(3)”提供了影院售票系统的完整设计和开发流程。以下是攻略的详细讲解: 1. 设计数据库 在设计影院售票系统之前,需要对数据库进行设计。可以使用SQL Server Management Studio创建一个名为MovieTicket的数据库,并在其中创建3个表格:Movie(电影)、Hall(影厅)和Ticket(票务信息)。 可…

    C# 2023年6月7日
    00
  • 关于数据库中保留小数位的问题

    那么我将为你详细讲解“关于数据库中保留小数位的问题”的完整攻略。 什么是小数位? 在计算机中,小数位指的是数值的小数部分,也叫做小数点后的位数。例如,对于数值 3.14159,小数位为5。 为什么要保留小数位? 在一些需要精确计算的场合,如财务计算、科学计算等领域,需要保留小数位,以确保计算结果的精确性。 数据库中的小数位处理 在数据库中,对于需要保留小数位…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部