C# 判断是否为空或null(使用三目运算)

C# 判断是否为空或null(使用三目运算)

说明

  1. 先分层检查 token、token[“mainData”]、token[“mainData”][“roleFID”] 是否为 null。
  2. 最后用 string.IsNullOrEmpty 检查转换后的字符串是否为空。
  3. 满足所有条件时赋值实际值,否则赋值默认值(这里用空字符串 “”,可根据需要改为其他默认值)。

更简洁的写法(C# 6.0+ 支持空传播运算符 ?.):

eASE.roleFID = !string.IsNullOrEmpty(token?.["mainData"]?.["roleFID"]?.ToString()) 
    ? token["mainData"]["roleFID"].ToString() 
    : "";

空传播运算符 ?. 会在遇到 null 时自动返回 null,避免空引用异常,让代码更简洁。

Java 中,`Integer` 是一个包装类(引用类型),它可以为 `null`。而 `int` 是基本类型,不能为 `null`。 当你需要将一个可能为 `null` 的 `Integer` 类型转换为 `int`,并在其为 `null` 时返回默认值 `0`,可以使用 **三元运算符(三目运算)** 来简洁地实现。 --- ### ✅ 正确写法:使用三目运算符 ```java Integer value = ...; // 可能为 null int result = value != null ? value : 0; ``` --- ### 🔍 解释: - `value != null`:判断 `Integer` 是否不为。 - `? value`:如果不为,取它的值(自动拆箱为 `int`)。 - `: 0`:如果为,返回 `0`。 这行代码等价于: ```java int result; if (value != null) { result = value; // 自动拆箱 } else { result = 0; } ``` 但由于自动拆箱机制,可以直接用 `value` 而不是 `value.intValue()`,所以三目写法非常简洁。 --- ### 🚫 错误示例(会抛出异常) ```java int result = value; // 如果 value == null,这里会抛出 NullPointerException! ``` 因为当 `value` 为 `null` 时,Java 会在自动拆箱时调用 `null.intValue()`,导致指针异常。 --- ### ✅ 更安全的工具方法(可选封装) 你可以封装成一个工具方法,便于复用: ```java public static int intValue(Integer integer) { return integer != null ? integer : 0; } ``` 使用方式: ```java Integer a = null; Integer b = 100; System.out.println(intValue(a)); // 输出: 0 System.out.println(intValue(b)); // 输出: 100 ``` --- ### ✅ 拓展:使用 `Optional`(Java 8+ 推荐风格) ```java import java.util.Optional; int result = Optional.ofNullable(value).orElse(0); ``` 这也是非常推荐的写法,语义清晰且函数式风格强。 --- ### ✅ 总结 | 需求 | 写法 | |------|------| | `Integer` 为 `null` 返回 `0` | `value != null ? value : 0` | | 安全获取 `int` 值 | 使用三目 `Optional.ofNullable(...).orElse(0)` | | 注意事项 | 直接赋值给 `int` 时若 `Integer == null` 会抛出 NPE | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值