首页 > 编程语言 >C# 运算符 ?、??、?: 、?. 、各种问号的用法和说明

C# 运算符 ?、??、?: 、?. 、各种问号的用法和说明

时间:2023-10-26 10:27:04浏览次数:42  
标签:返回 操作数 C# 运算符 可空 类型 null 问号

1. 可空类型修饰符(?)

引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。
例如:string str=null; 是正确的,int i=null; 编译器就会报错。
为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"
例如:int? 表示可空的整形,DateTime? 表示可为空的时间。
T? 其实是System.Nullable(泛型结构)的缩写形式,也就意味着当你用到T?时编译器编译 时会把T?编译成System.Nullable的形式。

2. 三元(运算符)表达式(?:) 

例如:x?y:z 表示如果表达式x为true,则返回y;如果x为false,则返回z,是省略if{}else{}的简单形式。

3. 空合并运算符(??) 

用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。
例如:a??b 当a为null时则返回b,a不为null时则返回a本身。
空合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算。

4、NULL检查运算符(?.)

不为null时执行后面的操作。

标签:返回,操作数,C#,运算符,可空,类型,null,问号
From: https://www.cnblogs.com/shieryoufeng/p/17788767.html

相关文章

  • oracle 11g 由于0rc4km05kgzb9占用undo 使用率高问题
    设置参数解决altersystemset"_smu_debug_mode"=33554432;设置这个之后v$undostat.tuned_undoretention会取(maxquerylensecs+300)和参数undo_retention里的最大值altersystemset"_undo_autotune"=false;直接禁用了AutomaticTuningofUndoRetention特性altersystem......
  • 解密长短时记忆网络(LSTM):从理论到PyTorch实战演示
    本文深入探讨了长短时记忆网络(LSTM)的核心概念、结构与数学原理,对LSTM与GRU的差异进行了对比,并通过逻辑分析阐述了LSTM的工作原理。文章还详细演示了如何使用PyTorch构建和训练LSTM模型,并突出了LSTM在实际应用中的优势。关注TechLead,分享AI与云服务技术的全维度知识。作者拥有1......
  • C# 枚举高级用法之Description
    在主函数中:publicenumDB{[Description("读")]write=1,[Description("写")]read=2,}privatestaticvoidMain(string[]args){//第一种方法Console.WriteLine(DB.write.ToDescription());Console.WriteLine(DB.read.ToDescrip......
  • 如何传递环境变量给Docker容器
    在Linux命令行中,可以使用-e选项来传递环境变量给Docker容器。这样,我们可以在运行容器的同时设置特定的环境变量,以满足应用程序的需求。下面将详细介绍如何使用Linux命令行传递环境变量给Docker容器。1、DockerRun命令:最常用的方法是在使用dockerrun命令时,通过-e选项传递环......
  • TCP Socket性能优化秘籍
    一、引言1.1、TCPSocket在网络通信中的重要性TCPSocket在网络通信中的重要性体现在其提供了可靠的数据传输、连接性、多路复用等特性,是实现各种网络应用的基础,同时具有广泛的兼容性。它的存在使得网络通信更加可靠、高效和方便。其重要性如下:可靠性:TCP(传输控制协议)是一种可......
  • LeCun和Bengio“吵”起来了,人工智能是“潘多拉魔盒”吗?
    作者|谢年年上周末,深度学习领域最有影响力的三巨头之二YannLeCun和YoshuaBengio就AI的潜在风险和安全问题引发了一场激烈辩论,人工智能是“潘多拉魔盒”吗?这场辩论引来众多AI知名人士围观。LeCun在Facebook上发起了这场辩论,并呼吁那些相信人工智能的力量和可靠性的“沉默大多数......
  • docker 日志处理
    手动清理cat/dev/null>*-json.log启动时添加配置dockerrun--log-driver=json-file--log-optmax-size=10mmy-container脚本#!/bin/shecho"====================startcleandockercontainerslogs=========================="logs=$(find/var/lib/docker/cont......
  • Linux | C库的制作
    Linux|C库的制作......
  • Openstack组件介绍
    Openstack七大组件介绍,OpenStack是一套laas解决方案,OpenStack是一个开源的云计算管理平台,以Apache许可证为授权Horizon组件——Horizon为OpenStack服务的Web控制面板,可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。——Horizon具有如下一些特点:——实力管理:创建、......
  • c++中的继承(下)
    首先我们先回忆一下,在派生类(子类)中默认的成员函数做了什么事情?我们现在可以这么认为对于普通类来说呢?只需要看待两个部分的成员:内置类型和自定义类型。而对于派生类而言序言看待三个部分的成员:内置类型,自定义类型以及父类类型构造和析构拷贝构造普通类对于内置类型一般不处理,自定类......