C# 中 ?、??、??=、?: 、?. 、?[] 各种问号的用法和说明

news/2025/11/26 8:12:33/文章来源:https://www.cnblogs.com/Can-daydayup/p/19270856

前言

在 C# 中,问号(?)远不止是一个简单的标点符号。随着语言版本的迭代更新,C# 围绕问号(?)发展出了一套强大而优雅的空值处理和条件表达机制。熟练掌握这些操作运算符不仅能大幅提升代码的简洁性和可读性,还能有效避免恼人的空引用异常,构建更加健壮的应用程序。

可空类型修饰符(?)

在 C# 中,值类型(如int、long、bool、DateTime等)默认不能为null。使用 ? 修饰符,我们可以将值类型转换为可空类型。

            int notNullableInt;// 非空int类型默认为 0
            int? nullableInt = null;
            bool? nullableBool = null;
            long? nullableLong = null;
            DateTime? nullableDate = null;

            // 检查是否有值
            if (nullableInt.HasValue)
            {
                Console.WriteLine($"整数值: {nullableInt.Value}");
            }
            else
            {
                Console.WriteLine("变量没有值(为null)");
            }

Null 合并运算符(??)

Null 合并运算符(??)如果左边的值不为null,则返回左边的值,否则返回右边的值。

        static void Main(string[] args)
        {
            string userName1 = "小明";
            string userName2 = null;
            var getUserName = userName1 ?? userName2 ?? "默认用户";

            Console.WriteLine(getUserName); // 输出: 小明

            string config1 = null;
            string config2 = null;
            string config3 = "DefaultConfig";
            string finalConfig = config1 ?? config2 ?? config3 ?? "FallbackConfig";
            Console.WriteLine(finalConfig); // 输出: DefaultConfig
        }

Null 合并赋值运算符(??=)

C# 8.0 引入的运算符,仅当左操作数为null时,才将右操作数的值赋给左操作数。这是懒加载模式的理想选择。

        static void Main(string[] args)
        {
            string? name = null;
            name ??= "时光者";
            Console.WriteLine(name); // 时光者

            name ??= "大姚"; // 不改变
            Console.WriteLine(name); // 时光者


            //惰性初始化
            Dictionary<string, string>? cache = null;

            cache ??= new Dictionary<string, string>();
            cache["UserName"] = name;

            Console.WriteLine(cache["UserName"]);
        }

三元条件运算符(?:)

条件运算符(?:),又称三元运算符,是一种简洁的条件表达式形式。它对布尔表达式进行求值,并根据结果为true或false,选择性地返回两个表达式中的对应结果,为简单条件判断提供了一种比传统if-else语句更紧凑、表达力更强的语法形式。

        static void Main(string[] args)
        {
            int score = 80;
            string level = score >= 60 ? "Pass" : "Fail";
            Console.WriteLine(level);
        }

Null 条件成员访问运算符 (?.)

Null 条件成员访问运算符 (?.) 在访问对象成员(属性、方法、字段等)前先检查对象是否为 null。如果对象为 null,整个表达式返回 null 而不会抛出 NullReferenceException;如果对象不为 null,则正常访问成员。

        static void Main(string[] args)
        {
            // 基本用法
            Person person = null;
            string name = person?.Name; // 不会抛出异常,name 为 null
            Console.WriteLine(name ?? "name is null"); // 输出: name is null
        }

Null 条件索引访问运算符 (?[])

Null 条件索引访问运算符 (?[]) 在使用索引器访问集合元素前先检查集合对象是否为 null。如果集合为 null,整个表达式返回 null 而不会抛出异常;如果集合不为 null,则正常访问索引位置的元素。

        static void Main(string[] args)
        {
            List<string> names = null;
            string firstName = names?[0]; // 不会抛出异常,firstName 为 null
            Console.WriteLine(firstName ?? "No names available"); // 输出: No names available

            // 初始化列表后访问
            names = new List<string> { "时光者", "小袁", "大姚" };
            string secondName = names?[0]; // 安全访问索引为0的元素
            Console.WriteLine(secondName); // 输出: 时光者
        }

C#/.NET/.NET Core面试宝典

本文已收录至C#/.NET/.NET Core面试宝典中,更新C#/.NET/.NET Core面试干货前往开源地址查看:

  • https://github.com/YSGStudyHards/DotNetGuide

image

image

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年质量好的碳纤维精密结构件TOP实力厂家推荐榜

2025年质量好的碳纤维精密结构件TOP实力厂家推荐榜碳纤维精密结构件行业背景与市场趋势碳纤维复合材料因其高强度、轻量化、耐腐蚀等优异性能,已成为航空航天、新能源汽车、高端工业装备等领域不可或缺的关键材料。根…

【关注可白嫖源码】--59234基于Java的黑龙江省旅游宣传网站的设计与实现 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年口碑好的碳纤维装饰片材厂家最新热销排行

2025年口碑好的碳纤维装饰片材厂家最新热销排行行业背景与市场趋势碳纤维装饰片材作为高端装饰材料,近年来在汽车内饰、电子产品外壳、高端家具等领域应用日益广泛。根据中国复合材料工业协会最新发布的《2024-2025中…

Flink DataStream API 基础构件DataStream Partitioning ProcessFunction - 指南

Flink DataStream API 基础构件DataStream Partitioning ProcessFunction - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

2025年知名的非标多孔钻床厂家实力及用户口碑排行榜

2025年知名的非标多孔钻床厂家实力及用户口碑排行榜行业背景与市场趋势随着"工业4.0"和"中国制造2025"的深入推进,非标多孔钻床作为孔加工领域的高效解决方案,在现代制造业中的应用日益广泛。根…

如何在Python中使用SQLite数据库进行增删改查操作?

SQLite 是 Python 内置支持的轻量级嵌入式数据库,无需安装额外服务端,仅通过文件(或内存)存储数据,非常适合小型项目、测试场景或本地数据管理。以下是完整的增删改查(CRUD)操作教程,包含核心语法、示例代码和…

2025年评价高的喷涂聚脲铁罐厂家推荐

2025年评价高的喷涂聚脲铁罐厂家推荐行业背景与市场趋势喷涂聚脲材料作为一种高性能防护涂料,近年来在工业防腐、建筑防水、市政工程等领域得到广泛应用。根据中国聚氨酯工业协会最新统计数据显示,2024年中国聚脲材料…

nestjs 使用类似midwayjs 模式加载模块

nestjs 使用类似midwayjs 模式加载模块midwayjs 在不少使用上实际与nestjs 是比较类似的,midwayjs 提供了一个比较有意思的玩法,就是组件化,nestjs 当然也有自己比较强大的模块化能力 参考玩法 机制上实际比较简单,…

2025年知名的高速注塑机TOP实力厂家推荐榜

2025年知名的高速注塑机TOP实力厂家推荐榜行业背景与市场趋势随着全球制造业的智能化升级和塑料制品需求的持续增长,高速注塑机市场正迎来新一轮发展机遇。根据Grand View Research最新报告显示,2023年全球注塑机市场…

2025年知名的瓶盖高速注塑机用户好评厂家排行

2025年知名的瓶盖高速注塑机用户好评厂家排行 行业背景与市场趋势 随着全球包装行业向轻量化、高效化方向发展,瓶盖注塑机的市场需求持续增长。据《2024-2029年全球注塑机行业分析报告》显示,2023年全球高速注塑机…

2025年比较好的一次性餐盒注塑机行业内口碑厂家排行榜

2025年比较好的一次性餐盒注塑机行业内口碑厂家排行榜行业背景与市场趋势随着全球环保意识的提升和"禁塑令"的逐步实施,一次性可降解餐盒市场需求呈现爆发式增长。据中国塑料加工工业协会最新数据显示,202…

2025年比较好的塑料餐盒注塑机最新TOP厂家排名

2025年塑料餐盒注塑机最新TOP厂家排名:专业分析与采购指南行业背景与市场趋势随着全球环保意识的提升和外卖行业的持续增长,塑料餐盒市场需求呈现稳定上升态势。根据《2024-2025全球食品包装行业报告》显示,2024年全…

2025年比较好的基板Tray芯片载盘实力厂家TOP推荐榜

2025年比较好的基板Tray芯片载盘实力厂家TOP推荐榜行业背景与市场趋势随着全球半导体产业持续扩张,芯片封装测试环节对高精度、高可靠性载具的需求日益增长。据SEMI最新报告显示,2024年全球半导体封装材料市场规模已…

2025年热门的SOP托盘芯片载盘厂家最新权威实力榜

2025年热门的SOP托盘芯片载盘厂家最新权威实力榜行业背景与市场趋势半导体封装测试作为芯片制造的关键环节,其配套耗材的质量直接影响产品良率和生产效率。近年来,随着全球半导体产业向中国转移,国内封测市场规模持…

.NET+AI | MEAI | 会话缓存(6)

MEAI 缓存机制:让 AI 应用响应提速 10 倍 一句话简介 通过 Microsoft.Extensions.AI 的缓存功能,智能存储和复用 AI 响应,显著降低 API 成本并将响应速度提升 10-100 倍。🎯 核心价值✅ 成本优化:相同请求直接返回缓…

2025 年中国有机农场排名推荐榜:生态农业的典范与健康生活的源泉

随着消费者对食品安全和健康生活方式的日益关注,有机农业在中国迎来了蓬勃发展。有机农场,作为保障绿色、无污染食品的生产基地,其选择和品质成为追求健康生活家庭的核心考量。然而,市场上打着“有机”旗号的农场众…

2025年质量好的工业母机超薄电机绝缘厂家最新实力排行

2025年质量好的工业母机超薄电机绝缘厂家最新实力排行行业背景与市场趋势随着工业4.0和智能制造技术的快速发展,工业母机作为制造业的"工作母机",其核心部件——超薄电机的性能要求日益提高。据中国机床工…

2025年靠谱的航空航天领域电机超薄电机绝缘高评价厂家推荐榜

2025年靠谱的航空航天领域电机超薄电机绝缘高评价厂家推荐榜行业背景与市场趋势随着航空航天工业的快速发展,对电机系统的要求日益严苛,特别是在重量、体积和可靠性方面。超薄电机绝缘技术作为航空航天电机的核心环节…

2025年靠谱的新型建材厂家推荐及选择参考

2025年靠谱的新型建材厂家推荐及选择参考行业背景与市场趋势随着中国城镇化进程的持续推进和"双碳"目标的提出,新型建材行业正迎来前所未有的发展机遇。据中国建筑材料联合会最新数据显示,2024年我国新型建…

2025年比较好的新型建材最新TOP品牌厂家排行

2025年比较好的新型建材最新TOP品牌厂家排行行业背景与市场趋势随着中国建筑行业向绿色化、智能化、工业化方向快速发展,新型建材行业迎来了前所未有的发展机遇。据中国建筑材料联合会最新数据显示,2024年我国新型建…