当前位置: 代码网 > it编程>编程语言>Asp.net > C# 空值处理运算符??、?. 及其它常用符号

C# 空值处理运算符??、?. 及其它常用符号

2025年11月20日 Asp.net 我要评论
一、核心运算符:直接解决空值问题1.??空合并运算符作用:左侧为null时,返回右侧值,否则返回左侧值。代码对比:// 传统写法string name;if (input != null) {

一、核心运算符:直接解决空值问题

1.??空合并运算符

  • 作用:左侧为null时,返回右侧值,否则返回左侧值。
  • 代码对比
    // 传统写法
    string name;
    if (input != null) {
        name = input;
    } else {
        name = "unknown";
    }
    
    // 使用 ?? 简化
    string name = input ?? "unknown";
    

2.?.空条件运算符

  • 作用:安全访问成员或方法,避免空引用异常。
  • 代码对比
    // 传统写法(可能崩溃)
    int length = person.address.city.length;
    
    // 使用 ?. 安全访问
    int? length = person?.address?.city?.length; // 任何一级为null则返回null
    

二、辅助运算符:扩展空值处理场景

3.??=空合并赋值(c# 8+)

  • 作用:变量为null时赋新值。
    list<int> data = null;
    data ??= new list<int>(); // 等效:if (data == null) data = new list<int>();
    

4.!非空断言(c# 8+)

  • 作用:明确告诉编译器“此处不为null”,慎用
    string? text = gettext();
    console.writeline(text!.length); // 开发者保证text非空
    

三、其他常用运算符:提升代码效率

5.?:三元运算符

  • 作用:简化条件判断。
    string status = score > 60 ? "通过" : "未通过";
    

6.as安全类型转换

  • 作用:转换失败返回null,不抛异常。
    object obj = "hello";
    string str = obj as string; // 成功返回字符串,失败返回null
    

7.is类型检查与模式匹配(c# 7+)

  • 作用:类型判断与值提取一步到位。
    if (obj is int number) {
        console.writeline($"数字:{number}");
    }
    

四、速查表:运算符使用场景

问题场景运算符示例代码等效传统写法
变量为空时使用默认值??var result = value ?? 0;value != null ? value : 0
安全访问可能为空的对象?.var city = person?.address?.city;if (person != null) person.address...
延迟初始化??=list ??= new list();if (list == null) list = new...
明确断言变量非空!text!.trim();无直接等效(需自行确保非空)

五、避坑指南

  1. 别滥用 ! 运算符

    // 错误用法:隐藏潜在的空引用风险
    var length = getnullablestring()!.length; 
    // 正确做法:优先使用 ?? 或 ?.
    var safelength = getnullablestring()?.length ?? 0;
    
  2. 值类型可空处理

    int? nullableint = null;
    int value = nullableint ?? -1; // 必须处理null!
    

到此这篇关于c# 空值处理运算符??、?. 及其它常用符号的文章就介绍到这了,更多相关c# 空值处理运算符 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com