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)”计算。


猜你喜欢
- 实现的效果是这样的:刚开始的时候,是在dev上找了两个轮子,简单测了下,都不太满意,滑动事件处理的比较粗糙,总有bug。就在想着,要不要拿源
- WPF 窗体设置亚克力效果框架使用大于等于.NET40。Visual Studio 2022。项目使用 MIT 开源许可
- C语言运算符及其优先级汇总表口诀圆下箭头一顿号非凡增减富强针地长三乘除,四加减,五移位千万别把鱼忘记,它在盛饭的厨子里小灯大灯灯灯不等爸喂鱼
- 首先,在main方法的类上添加注解:@ServletComponentScan(basePackages = "applicati
- 前言本文将重点讲解一下Spring中@PropertySource注解的使用,如何通过PropertySource注解加载指定的配置文件。以
- 我就废话不多说了,大家还是直接看代码吧~<!-- 查询物品的id --><select id="checkIte
- Java中IO的模型分为三种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。BIO【同步阻塞】在JDK1.4出来之前,我们建立网
- 在正式的进入主题之前,我们先来了解下深拷贝和前拷贝的概念:浅拷贝:会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性是基本
- 1、Swagger是啥Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务。通俗的来讲,Swagger
- 基于创蓝253短信服务平台的Java调用短信接口APIpackage com.bcloud.msg.http;import java.io.
- 背景最近项目中需要上传视频文件,由于视频文件可能会比较大,但是我们应用服务器tomcat设置单次只支持的100M,因此决定开发一个分片上传接
- 目录一、事出有因二、解决方案困境三、柳暗花明,终级解决方案第一种实现方案第二种实现方案第三种实现方案四、引发的思考一、事出有因最近有一个场景
- 一、简介:介绍两种使用 BitmapTransformation 来实现 Glide 加载圆形图片和圆角图片的方法。Glide 并不能直接支
- cookie和session的区别和联系cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储
- 一、组件生命周期flutter组件只有两种:有状态和无状态组件。由于无状态组件效率高,如果不涉及到组件内部的数据存储,尽量多的使用无状态组件
- 一、Sharding-JDBC简介Sharding-JDBC是Sharding-Sphere的一个产品,它有三个产品,分别是Sharding
- 体验了一下美团外卖的底部导航栏,感觉动画很流畅,分割线被顶起,还有图标的动画,可能用的lottie,觉得分割线被顶起可以自己写动画,所以试着
- 本文实例讲述了C#实现获取程序路径方法。分享给大家供大家参考。具体如下:获取DLL的目录:Assembly myAssembly = Ass
- package com.action.android_test;import android.location.Location;impor
- springboot 高版本后不支持log4j了,很多人还是喜欢log4j风格的日志,我们自己来加载log4j,其实