当前位置: 首页 > news >正文

21、c#中“?”的用途

在C#中,? 是一个多用途的符号,具有多种不同的用途,具体取决于上下文。以下是一些常见的用法:

1、可空类型(Nullable Types)

? 可以用于将值类型(如 int、bool 等)变为可空类型。例如,int? 表示一个可以为 null 的整数。

int? nullableInt = null;
nullableInt = 5;

2、空条件运算符(Null-conditional Operator)

?. 用于在访问对象的成员(如属性或方法)时,先检查对象是否为 null,以避免 NullReferenceException。

string str = null;
int? length = str?.Length; // length 将为 null,因为 str 是 null

3、空合并运算符(Null-coalescing Operator)

?? 用于在左侧表达式为 null 时,返回右侧的默认值。

int? nullableInt = null;
int value = nullableInt ?? 10; // value 将为 10,因为 nullableInt 是 null

4、事件处理程序中的可选参数(不直接用 ? 表示,但相关)

在事件处理程序中,EventArgs 参数通常可以通过定义一个没有参数的处理器来忽略,这与 ? 无关,但事件订阅时可以省略参数。

public event EventHandler MyEvent;void OnMyEvent()
{MyEvent?.Invoke(this, EventArgs.Empty); // 使用空条件运算符安全调用事件
}

5、模式匹配中的 is 表达式(C# 7.0 及以上)

在类型模式匹配中,is 关键字可以与 ? 结合,用于类型检查和转换,不过这里 ? 是类型模式的一部分,用于表示可空类型。

object obj = 5;
if (obj is int? nullableInt && nullableInt.HasValue)
{Console.WriteLine($"Value: {nullableInt.Value}");
}

6、三元运算符(Ternary Operator)

虽然三元运算符本身不使用 ? 作为“用途”,但它是 ? : 结构的一部分,用于简单的条件判断。

int a = 10, b = 20;
int max = (a > b) ? a : b; // max 将为 20

? 在C#中主要用于处理可空性和空值检查,帮助开发者编写更健壮和安全的代码。

相关文章:

  • TDengine 语言连接器(R语言)
  • 【QT】常用控件 【多元素类 | 容器类 | 布局类】
  • 【n8n docker 部署的代理问题】解决n8n部署无法访问openai等外国大模型厂商的api
  • 入门-C编程基础部分:5、变量
  • MyBatis-Plus 中BaseMapper接口是如何加速微服务内部开发的?
  • 在ubuntu20.04+系统部署VUE及Django项目的过程记录——以腾讯云为例
  • HADOOP——序列化
  • 高并发多级缓存架构实现思路
  • 施磊老师基于muduo网络库的集群聊天服务器(一)
  • 微软承认Win11出现极端错误,只能强制关机或重装系统
  • typescript html input无法输入解决办法
  • 《Not All Tokens Are What You Need for Pretraining》全文翻译
  • 二进制和docker两种方式部署Apache pulsar(standalone)
  • Flink运行时架构
  • Vue3 nextTick
  • 基于sherpa-onnx 安卓语音识别尝鲜
  • 与AI深度融合的Go开发框架sponge,解决使用cursor、trae等AI辅助编程工具开发项目时的部分痛点
  • n8n 为技术团队打造的安全工作流自动化平台
  • 优化 Dockerfile 性能之实践(Practice of Optimizing Dockerfile Performance)
  • 【场景应用9】多语言预训练语音模型进行自动语音识别
  • 济南推广网站建设/大连头条热点新闻
  • 税务局网站模板/百度400电话
  • 衡水企业做网站推广/广告营销
  • 做网站报价公司/网页制作免费网站制作
  • 深圳网站建设 独占网络/短视频营销方式有哪些
  • 做外贸哪个英文网站好/杭州搜索引擎优化公司