论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
安全
›
网络安全
›
C#中?.、??、?:、及?等符号用途
C#中?.、??、?:、及?等符号用途
欢乐狗
论坛元老
|
2023-4-4 14:12:24
|
显示全部楼层
|
阅读模式
楼主
主题
1019
|
帖子
1019
|
积分
3057
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
1.可空类型修饰符(?)
众所周知,在C#中引用类型可以使用一个null引用来表示一个不存在的值,比如 string str = null 是正确的;
但是值类型却不能为空,比如 int k = null 那么编译器就会报错;
为了让值类型也可以为空,就需要使用可空类型,即用可空类型修饰符 "?" 来表示
,举例如:
int? 表示可空的整形,DateTime? 表示可为空的时间。这样我们就可以写int? k = null 而不报错。
它的表现形式为 "T?" ,T? 其实是System.Nullable(泛型结构)的缩写形式,
也就意味着当你用到T?时编译器编译时会把T?编译成System.Nullable的形式。
例如:int?,编译后便是System.Nullable的形式。
2.NULL检查运算符(?.)
?. 可以作为是否为NULL的检查运算符。让我们举个例子:
现在要获取某点的X值,那么我们就需要判断该点是否为空,代码可以写成:
int? firstX = null;
if (points != null)
{
//获取该集合中首个元素
var first = points.FirstOrDefault();
if (first != null){firstX = first.X;}
}
复制代码
而现在我们可以简写这个代码,在C# 6.0中,引入了一个 ?. 的运算符,前面的代码可以改成如下形式:
int? firstX = points?.FirstOrDefault()?.X;
从这个例子中我们也可以看出它的基本用法:如果对象为NULL,则不进行后面的获取成员的运算,直接返回NULL。
3.空合并运算符(??)
用于定义可空类型和引用类型的默认值。
如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数
。例如:
a??b 当a为null时则返回b,a不为null时则返回a本身。
空合并运算符为右结合运算符,即
操作时从右向左进行组合的
。
如,“a??b??c”的形式按“a??(b??c)”计算。
4.三元(运算符)表达式(?: )
例如:x == 0 ? y : z 表示如果表达式 x == 0 为true,则返回y;
如果 x == 0 为false,则返回 z,是省略 if{} else{} 的简单形式。
本质:
都使用了语法糖,在编译阶段编译器会把特殊符号先转译成原始状态再编译
。
学无止境,积少成多,与看到的你共勉。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
欢乐狗
论坛元老
这个人很懒什么都没写!
楼主热帖
C# 读写文件从用户态切到内核态,到底 ...
LeetCode刷题100道,让你滚瓜烂熟拿下S ...
我的 Java 学习&面试网站又又又升级了 ...
SQL server 2008 r2 安装教程
不到一周我开发出了属于自己的知识共享 ...
基于梯度优化的混沌PSO算法matlab仿真 ...
x64dbg 配置插件SDK开发环境
dfs学习笔记
Spring Boot 多数据源配置
SAP集成技术(十一)SAP混合集成平台 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
MES
物联网
容器及微服务
快速回复
返回顶部
返回列表