首页 > 编程语言 >C#中问号(?)运算符的历代新增用法

C#中问号(?)运算符的历代新增用法

时间:2024-01-30 21:33:06浏览次数:36  
标签:box string C# 运算符 int null 问号

本文是B站up主 十月的寒流 的相应视频的学习笔记,可以直接访问该视频获取更详细的讲解:
C#中问号(?)运算符的历代新增用法

C# 1.0 三目运算符

string res = x >5 ? "goood" : "no"

C# 2.0 可为空的值类型(Nullable Value Types)

int? x = null;
上述代码本质上是Nullable<int> x = null
int? y = default即该int?类型的默认值不再是int类型的默认值0,而是null
int? 还是值类型,不是引用类型

C# 6.0 Null Propagator(空引用传递)

短路机制
1.对于属性的访问,遇到第一个null就直接返回null:
string childName = p?.Child?.Name;
2.对于方法的调用,遇到第一个null就停止:
p?.Child?.SayHello();
3.?[]:
var firstLetter = p?.Name?[0]; //实际上firstLetter就是一个char?
PropertyChanged?.Invoke(); //在调用事件的时候,可以不用关注事件是否是null

C# 8.0 Null-Coalescing ?? (空合并)

message = message ?? GetMessage(); //如果??左边为null则返回右边的值
可以升级简化为:message ??= GetMessage();

C# 8.0 Nullable Reference Type 可为空的引用类型

string? //C#中string是引用类型

C# 8.0 Null-Forgiving Operator(空包容)

var box = this.FindName("box") as TextBox;
box!.Text = "Hello";

表面我确定这个box一定能找到,一定不为空

标签:box,string,C#,运算符,int,null,问号
From: https://www.cnblogs.com/xavierxiu/p/17995341

相关文章

  • centos安装jdk
    介绍一种简单的安装方法1、查找yum包下有哪些JDK的版本yumsearchjava|grepjdk2、安装1.8.0版本yuminstall-yjava-1.8.0-openjdk*3、查看安装成功后的版本java-version4、查看安装目录find/-name'java'......
  • centos下通过rpm来安装jdk17
    一、下载rpm包wgethttps://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm二、安装JDKrpm-ivhjdk-17_linux-x64_bin.rpm三、检查安装版本java-version......
  • 算力操作系统的GPU、CPU与高速缓存网络
    在现在的AI时代,大规模计算能力已经是推动科技进步和社会发展的刚需,LAXCUS分布式操作系统作为新的重构后的算力体系的核心,在这里面起到承下启下的作用。其底层架构中的GPU、CPU以及高速缓存网络之间的关系显得尤为重要。本文将简单说说这三者之间的互动与影响,以揭示LAXCUS做为算力操......
  • 无涯教程-switch…case 语句函数
    switch语句判断表达式,将表达式的值与case子句匹配,然后执行与该case相关的语句。switch(variable_expression){caseconstant_expr1:{//statements;break;}caseconstant_expr2:{//statements;break;}default:{......
  • RocketMQ应用-基金购买秒杀实现
    架构支持根据实际业务场景,分析集群分流的具体处理方案,假设基金购买接口单次处理时间为500ms,tomcat使用默认线程数200,则单个tomcat处理基金购买接口的QPS=1000/500*200=400。场景1-4000QPS要求实现4000QPS的并发量,可以部署10个tomcat集群应用,使用nginx做负载均衡,轮询分配到tomc......
  • 【侯捷C++面向对象笔记】补充2-pointer-like & function-like class
    关键词:仿函数pointer-like:将一个类设计得像指针一样,通常通过重载*和->操作符实现。function-like:将类的成员设计得能像函数一样使用,通过重载()操作符实现。TipDemo应用:智能指针注意:->符号在作用一次后,会继续作用下去(不同于*号)Foof(*sp):f为一个Foo对象本体,使用时f.m......
  • 【侯捷C++面向对象笔记】补充3-template
    关键词:类模板,函数模板,成员模板,模板特化“泛化”和“特化”TipDemo类模板定义时需要显式地指定类型名。函数模板定义时编译器自动进行实参推导类型(但不提供隐式转换)。成员模板:模板中还包含模板模板(全)特化格式:template<>尖括号内为空模板偏特化(partia......
  • abc337解题报告
    A略B略C略D略E略G简要题意这题比F简单很多,但是两题都不难。考虑枚举\(w\)的位置,把它拎起来当根,然后考虑一个儿子\(son\)认为\(u\)在它的子树内。实际上,我们不可能把\(w\)拎起来当根,所以我们对\(son\)分两类讨论:\(son\)是\(w\)的儿子,我们求出\(v\)......
  • 【侯捷C++面向对象笔记】补充4-object model
    关键词:虚函数表,动态绑定,多态每个对象都维护自己的虚表指针,指向类的虚函数表。(所以对象的size比其包含的所有数据size多4,即虚指针大小)➡️动态绑定:(多态的实现原理)通过指针p找到对象c的vptr通过vptr找到classC的vtbl在vtbl中找到第n个虚函数并调用➡️子类调用父类函数隐......
  • SciTech-CG-Graphics-Chart-CodeGenerator-PyQtGraph: 基于PyQt的图形绘制以及应用库
    UMLclassdiagram:https://pyqtgraph.readthedocs.io/en/latest/api_reference/uml_overview.htmlFlowChart:https://pyqtgraph.readthedocs.io/en/latest/api_reference/flowchart/index.htmlTheStateMachineFramework¶:https://doc.qt.io/qtforpython-5/overviews/......