我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

一、可空类型修饰符(?)

C#2.0里面实现了Nullable数据类型

//A.比如下面一句,直接定义int为null是错误的,错误提示为无法将null转化成int,因为后者是不可以为null的值类型。
private int getNum = null;

//B.如果修改为下面的写法就可以初始指为null,在特定情况下?等同于基础类型为Nullable。
private int? getNum = null;
private Nullable<int> getNumNull = null;

二、三元运算符(?:)

需要if语句来判断,当Request.Params["para"]不为null时,取出para的值。

string strParam =Request.Params["para"];  
if ( strParam== null )  
 {  
    strParam= "";  
 }

用三元运算符?简化写法,取出para的值。

string strParam=Request.Params["para"] == null ? "":Request.Params["para"];

三、null合并运算符(??)

?? 运算符称为“ null 合并运算符”,用于定义可以为 null 值的类型和引用类型的默认值。合并运算符为类型转换定义了一个预设值,以防可空类型的值为Null。

如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。

int? x = null;//定义可空类型变量
int? y = x ?? 1000;//使用合并运算符,当变量x为null时,预设赋值1000
Console.WriteLine(y.ToString()); //1000

null 合并运算符为结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(bb??cc)”计算。

如果在尝试将可以为 null 值的类型分配给不可以为 null 值的类型时没有使用 ?? 运算符,则会生成编译时错误。如果使用强制转换,且当前还未定义可以为 null 值的类型,则会引发InvalidOperationException 异常。

//A.定义getNum为null,输出结果为0
private int? getNum = null;
Console.WriteLine(getNum ?? 0);

//B.定义getNum为1,输出结果为1
 private int getNum = 1;
 Console.WriteLine(getNum ?? 0);

四、NULL条件运算符(?.) 

在C# 6.0中,引入了一个 ?. 的运算符。

如果对象为NULL,则不进行后面的获取成员的运算,直接返回NULL

void Main()
{

    //首先我们定义全局变量Person对象,有可能p为null的情况下取值。
    Person p = null;
    string telePhoneNo = string.Empty;  //定义telePhoneNo 

    //取Person的telePhoneNo 
    //A.初始写法,if条件判断
    if (p != null)
    {
        if (p.Secret != null)
        {
            telePhoneNo = p.Secret.TelePhoneNo;
        }
    }

    //B.三元运算符写法,单问号?
    telePhoneNo = p != null ? (p.Secret != null ? p.Secret.TelePhoneNo : "") : "";

    //C. NULL检查运算符?.
    telePhoneNo = p?.Secret?.TelePhoneNo ?? "";
    Console.Write(telePhoneNo);
}

public class SecretByMySelf
{
    public string Password { get; set; }
    public string TelePhoneNo { get; set; }
}

public class Person
{
    public string Name { get; set; }
    public SecretByMySelf Secret { get; set; }
}

五、?[]"运算符:

用于在执行成员访问 (?.) 或索引 (?[) 操作之前,测试是否存在 NULL。 这些运算符可帮助编写更少的代码来处理 null 检查,尤其是对于下降到数据结构。

int? count = customers?[0]?.Orders?.Count(); 
 // null if customers, the first customer, or Orders is null

到此这篇关于C#中单问号(?)和双问号(??)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#的单问号与双问号有什么作用

这篇文章主要介绍了C#的单问号与双问号有什么作用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#的单问号与双问号有什么作用文章都会有所收获,下面我们一起来看看吧。C# 单问号 ? 与 双问号 ??? 单问号用
2023-06-17

c语言中单引号和双引号的用法

摘要:c 语言中的单引号和双引号用于定义字符串常量,单引号定义长度受限的字符数组,存储于数据区,可修改;双引号定义存储于代码区的字符串常量,长度不受限,不可修改,可包含转义字符。单引号和双引号在 C 语言中的用法开门见山:单引号 (')
c语言中单引号和双引号的用法
2024-05-02

c语言中单等号和双等号的区别

单等号 (=) 用于赋值,将右边值赋给左边变量;双等号 (==) 用于比较,判断两个操作数是否相等,返回 0(假)或 1(真)。C 语言中单等号和双等号的区别在 C 语言中,单等号 (=) 和双等号 (==) 具有不同的用法:单等号(=
c语言中单等号和双等号的区别
2024-05-02

Shell中的单中括号和双中括号的用法详解

SHELL是Unix系统的用户与操作系统之间的一种接口。它既是UNIX系统的命令解释程序,又是一种高级的命令程序设计语言。作为命令解释程序,SHELL接收用户输入的命令,将命令翻译成一个动作序列,然后调用系统过程执行这条命令。作为命令程序设
2022-12-23

php中单双引号的区别和用法

在 php 中,单双引号的区别在于字符串解析方式:单引号不解析变量,输出字面量,不处理转义序列,无法表示单引号;双引号解析变量,处理转义序列,可以表示双引号。选择单引号时用于输出字面量字符串,避免误用单引号结束符;选择双引号时用于解析变量,
php中单双引号的区别和用法
2024-04-29

PHP中单引号和双引号的使用规则解析

在PHP中,单引号和双引号是两种常见的字符串包裹方式,它们在使用时有着不同的特点和规则。本文将分别对单引号和双引号的使用规则进行解析,并提供具体的代码示例来帮助读者更好地理解它们的区别。一、单引号的使用规则:单引号内的内容会被原样输出,不
PHP中单引号和双引号的使用规则解析
2024-03-05

Shell脚本中单引号(‘)和双引号(“)的使用区别

在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用'$param'这种带引号的使用的场景,首先大家看一段例子:[root@linux
2022-06-04

使用Python处理json字符串中的非法双引号问题

这篇文章主要介绍了使用Python处理json字符串中的非法双引号问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-08

深入理解PHP中单引号和双引号的不同之处

在PHP编程中,单引号和双引号虽然看似相同,但实际上在使用场景和功能上存在着一些细微的差别。深入理解单引号和双引号的不同之处,可以帮助开发者更好地掌握PHP中字符串的处理方式,避免一些不必要的错误。下面将通过具体的代码示例来详细说明单引号和
深入理解PHP中单引号和双引号的不同之处
2024-03-05

PHP中单引号和双引号的比较与实际应用

PHP中单引号和双引号的比较与实际应用在PHP编程中,使用单引号和双引号都可以用来表示字符串。虽然两者都有相似的作用,但在具体使用中还是有一些区别。本文将从单引号和双引号的区别出发,探讨它们在实际应用中的不同情况,并通过具体的代码示例来进
PHP中单引号和双引号的比较与实际应用
2024-03-05

Kotlin中空判断与问号和感叹号标识符使用方法

最近使用kotlin重构项目,遇到了一个小问题,在Java中,可能会遇到判断某个对象是否为空,为空执行一段逻辑,不为空执行另外一段逻辑,下面这篇文章主要给大家介绍了关于Kotlin中空判断与问号和感叹号标识符处理操作的相关资料,需要的朋友可以参考下
2022-12-08

Python输出列表(List)不带中括号和引号的问题及解决方法

这篇文章主要介绍了Python输出列表(List)不带中括号和引号的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-02-27

win7系统中常见的一些小问题和解决方法简单整理

在使用电脑中难免会遇到一些小问题,而小问题如果你知道解决方法的话,那么基本上几分编程客栈钟就能解决了,而如果你不知道可以要想很久或者百度很久才能找到解决方法。 一、截图花屏 这个问题主要是由于显卡驱编程客栈动程序和你的显卡不是很配的情况下才
2023-06-01

C++中指针问题和引用问题的解决方法

C++中指针问题和引用问题的解决方法引言:在C++编程过程中,指针问题和引用问题是常见的困扰程序员的难题。本文将介绍一些解决这些问题的方法,并通过具体的代码示例进行说明,帮助读者更好地理解和应用。一、指针问题的解决方法空指针检测在使用指针之
2023-10-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录