c#中?的六种用途

 更新时间:2025年04月22日 10:24:01   作者:o0向阳而生0o  
? 是一个多用途的符号,具有多种不同的用途,本文主要介绍了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#中主要用于处理可空性和空值检查,帮助开发者编写更健壮和安全的代码。

到此这篇关于c#中?的六种用途的文章就介绍到这了,更多相关c# ?内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中Sleep() 和 Wait()的区别小结

    C#中Sleep() 和 Wait()的区别小结

    Sleep()和 Wait()是两个不同的方法,用于控制线程的执行,本文主要介绍了C#中Sleep()和Wait()的区别小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • C# winForm自定义弹出页面效果

    C# winForm自定义弹出页面效果

    这篇文章主要为大家详细介绍了C# winForm自定义弹出页面效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#使用Linq实现简单去重处理

    C#使用Linq实现简单去重处理

    这篇文章主要为大家详细介绍了C#如何使用Linq实现简单去重处理功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • C# 分支与循环介绍

    C# 分支与循环介绍

    在C# 程序中有三种结构: 顺序结构,分支结构,循环结构。
    2013-04-04
  • C#数组中List, Dictionary的相互转换问题

    C#数组中List, Dictionary的相互转换问题

    这篇文章主要介绍了C#数组中List, Dictionary的相互转换问题,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    这篇文章主要介绍了C#实体对象序列化成Json并让字段的首字母小写的两种方法,在这两种方法中小编比较推荐使用第二种方法,需要的朋友可以参考下
    2018-06-06
  • C#程序最小化到托盘图标操作步骤与实现代码

    C#程序最小化到托盘图标操作步骤与实现代码

    设置窗体属性showinTask=false;加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标;添加窗体最小化事件(首先需要添加事件引用)接下来介绍实现代码,感兴趣的朋友可以研究下
    2012-12-12
  • C#中Socket与Unity相结合示例代码

    C#中Socket与Unity相结合示例代码

    这篇文章主要给大家介绍了关于C#中Socket与Unity相结合的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-10-10
  • c#实现flv解析详解示例

    c#实现flv解析详解示例

    本文提供的解析程序简单的把FLV分解了出来,如果要做FLV的修改操作的话,可以给每个类加个toStream方法,再历遍依次调用就可以写回到文件里了
    2014-01-01
  • C#基础语法:as 运算符使用实例

    C#基础语法:as 运算符使用实例

    这篇文章主要介绍了C#基础语法:as 运算符使用实例,本文给出了类、字符串、数字、浮点数、null等值的运算实例,需要的朋友可以参考下
    2015-06-06

最新评论