C#中?的7种用法

 更新时间:2026年07月03日 08:58:57   作者:软泡芙  
本文主要介绍了C#里的可空类型修饰符?、三元表达式?:、NULL检查运算符?.、?[ ]、?[]?、空合并运算符??、null合并赋值运算符??=等特殊运算符的用法和语法,感兴趣的可以了解一下

可空类型修饰符?

int? num = null;//表示可空的整型
DateTime? dateTime = null; //表示可空的时间

三元(运算符)表达式?:

表示如果表达式x为true,则返回y,如果x为false,则返回z,是省略if{}else{}的简单形式。

x?y:z 

NULL检查运算符?.

如果对象为NULL,则不进行后面的获取成员的运算,直接返回NULL

int? firstX = points?.FirstOrDefault()?.X;

?[ ]

int? first = customers?[0].Orders.Count();

?[]?

params Delegate?[] delegates -它是可为空的数组 Delegate

params Delegate?[]? delegates -整个数组可以为空

public static Delegate? Combine(params Delegate?[]? delegates)
{
    if (delegates == null || delegates.Length == 0)
        return null;

    Delegate? d = delegates[0];
    for (int i = 1; i < delegates.Length; i++)
        d = Combine(d, delegates[i]);

    return d;
}

空合并运算符??

用于定义引用类型和可空类型的默认值。如果此运算符的左操作数不为Null,则此操作符将返回左操作数,否则返回右操作数。

var c = a??b //当a不为null时返回a,为null时返回b

null 合并赋值运算符??=

仅当左操作数计算为 null 时,才能使用运算符 ??= 将其右操作数的值分配给左操作数。

List<int> numbers = null;
int? i = null;
 
numbers ??= new List<int>();
numbers.Add(i ??= 17);
numbers.Add(i ??= 20);
 
Console.WriteLine(string.Join(" ", numbers));  // output: 17 17
Console.WriteLine(i);  // output: 17

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

相关文章

  • c# 面试必备线程基础知识点

    c# 面试必备线程基础知识点

    这篇文章主要介绍了c# 面试必备线程基础知识点,帮助大家更好的巩固,掌握线程的基础知识,感兴趣的朋友可以了解下
    2020-11-11
  • C#表达式树讲解

    C#表达式树讲解

    本文详细讲解了C#表达式树的创建、生成和使用,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C#利用控件拖拽技术制作拼图游戏

    C#利用控件拖拽技术制作拼图游戏

    这篇文章主要介绍了C#利用控件拖拽技术制作拼图游戏的方法以及核心代码,需要的朋友可以参考下
    2015-06-06
  • C#实现俄罗斯方块

    C#实现俄罗斯方块

    这篇文章主要为大家详细介绍了C#实现俄罗斯方块小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 一文带你了解C#中抽象方法与虚方法的区别

    一文带你了解C#中抽象方法与虚方法的区别

    这篇文章主要通过简单的示例为大家详细介绍一下C#中抽象方法与虚方法的区别,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • C# 开发 FTP 客户端的两种方式

    C# 开发 FTP 客户端的两种方式

    C# 开发 FTP 客户端主要有两种思路:一是使用 .NET 内置的 FtpWebRequest类,二是借助功能更强大的第三方开源库,下面就来详细的介绍一下这两种方法,感兴趣的可以了解一下
    2025-12-12
  • C#中常见的系统内置委托用法详解

    C#中常见的系统内置委托用法详解

    这篇文章主要介绍了C#中常见的系统内置委托用法,主要包括了Action类的委托、Func类的委托、Predicate<T>委托、Comparison<T>委托等,需要的朋友可以参考下
    2014-09-09
  • c# winform多线程的小例子

    c# winform多线程的小例子

    c# winform多线程的小例子,需要的朋友可以参考一下
    2013-04-04
  • c#代码自动修改解决方案下任意文件实例

    c#代码自动修改解决方案下任意文件实例

    这篇文章主要介绍了c#代码自动修改解决方案下任意文件实例,有需要的朋友可以参考一下
    2013-11-11
  • C#中的enum、struct和class三种类型的对比总结

    C#中的enum、struct和class三种类型的对比总结

    在 C# 类型系统中,enum、struct 和 class 是三种最基础且最重要的类型定义方式,本文将系统性地总结这三种类型的特性、差异及使用建议,希望对大家有所帮助
    2026-03-03

最新评论