C#中的问号(?号)用法小结
作者:junjie 发布时间:2023-12-26 08:03:25
1. 可空类型修饰符(?):
引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。
例如:
string str=null;是正确的。
int i=null;编译器将报错。
为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示,表现形式为T?。
例:int?表示是可空的整形,DateTime?表示为可空的时间。
T?其实是System.Nullable<T>(泛型结构)的缩写形式,也就意味着当你用到T?时编译器在编译时会把T?编译成System.Nullable<T>的形式,
例如:int?,编译后便是System.Nullable<int>的形式。
2. 三元(运算符)表达式(?:):
语法为:条件表达式?表达式1:表达式2;
该操作首先求出条件表达式的值(bool类型),为true时调用表达式1,为flase时调用表达式2。
其逻辑为:"如果为真执行第一个,否则执行第二个。"
例:
test ? expression1 : expression2
test 任何 Boolean 表达式。
expression1 test 为 true 时返回的表达式。可能是逗点表达式。
expression2 test 为 false 时返回的表达式。可能是逗点表达式。
例如:
string prm1="4"; string prm2="5";
string prm3 = prm1==prm2?"yes":"no" // 此时prm3值为"no".
3. 空合并运算符(??):
空合并运算符 (null coalescing operator) ??
用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
例:a??b 如果 a 为非空,则 a ?? b 的结果为 a;否则结果为 b 。
空合并运算符为右结合运算符,即操作时从右向左进行组合的。
例:“a??b??c”的形式按“a??(b??c)”计算。
猜你喜欢
- 什么是序列化: 序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)
- 在 C# WPF开发中颜色对话框控件(ColorDialog)用于对界面中的背景、文字…(拥有颜色属性的所有控件)设置
- 引言:在Object基类中,有一个方法叫clone,产生一个前期对象的克隆,克隆对象是原对象的拷贝,由于引用类型的存在,有深克隆和浅克隆之分
- 前言:在没有接触java8的时候,我们遍历一个集合都是用循环的方式,从第一条数据遍历到最后一条数据,现在思考一个问题,为什么要使用循环,因为
- rocketmq消费者注册监听有两种模式有序消费MessageListenerOrderly和并发消费MessageListenerConc
- 本文实例讲述了java实现将结果集封装到List中的方法。分享给大家供大家参考,具体如下:import java.sql.Connectio
- Java基础面试题及答案集锦(基础题122道,代码题19道),具体详情如下所示:1、面向对象的特征有哪些方面1.抽象:抽象就是忽略一个主题中
- 一、问题由来项目开发中,由于实际需要将某一个功能模块抽取成了一个单独的服务,其他地方需要调用的时候,通过Spring提供的RestTempl
- Mapper 就是“映射”的意思,Mapper 文件时 Mybatis 中的 SQL 语句的配置文件
- 使用场景当遇到需要临时修改的 bug,但当前正在开发的内容不能删掉,这个时候就需要把当前已经开发的代码另外保存下来(即保存现场),当把 bu
- 一、何为栈?栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称
- Spring自动装配之方法、构造器位置的自动注入1. 注解定义@Autowired的定义信息如下:@Target({ElementType.
- 一、背景Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE
- Android5.0之后提供了JobService和JobScheduler,用于在稍后的某个时间点或者当满足某个特定的条件时执行一个任务
- 访问静态资源遇到的坑及解决开始是以这种结构进行的,结果页面上一篇红,访问的页面是这样的最终找出来问题,虽然每次调整路径都不对,最终查看多种方
- springboot整合nacos1、引入依赖<dependency> <groupId>
- 目录1.启动分为两种方式2.如何测量一个应用的启动时间3.应用启动的流程4.减少应用的启动时间的耗时5.如何设计延迟加载DelayLoad1
- Application.Idle()方法表示:当应用程序处于空闲状态时执行相应代码。示例程序1、界面设计:一个简单的Lable控件2、代码u
- 概述从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.获取哈希值hashCode()方法可以返回一个对象的哈希
- 今天整理之前的代码,忽然看到之前自己写的一个刮刮卡,整理下以便以后使用,同时分享给需要的朋友,如有错误,还请多多指正。实现的步骤,其实就是徒