加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将null转换为字符串会导致装箱吗?

发布时间:2020-12-15 20:06:42 所属栏目:百科 来源:网络整理
导读:想象一下这样的代码: var str = (String)null; 它有什么不同于: String str; 要么: String str = null; 第一个代码是否会导致空值的装箱,还是在编译时将其解析为字符串? 解决方法 让我们把你的问题拿出来挑选它. 您问题中的代码会导致拳击吗? 不,它不会
想象一下这样的代码:

var str = (String)null;

它有什么不同于:

String str;

要么:

String str = null;

第一个代码是否会导致空值的装箱,还是在编译时将其解析为字符串?

解决方法

让我们把你的问题拿出来挑选它.

您问题中的代码会导致拳击吗?

不,它不会.

这不是因为3个语句中的任何一个都以不同的方式运行(虽然存在差异,但更多如下),但拳击不是使用字符串时发生的概念.

当您获取值类型并将其包装到对象中时,就会发生拳击.字符串是引用类型,因此永远不会涉及到拳击.

所以拳击出局了,剩下的就是这三个陈述相等吗?

这两个也会这样做:

var str = (String)null;
String str = null;

第三个(虽然你的问题顺序中的第二个)是不同的,因为它只声明str标识符是String类型,它没有专门将它初始化为null.

但是,如果这是一个类的字段声明,这将是相同的,因为在构造对象时所有字段都被初始化为默认值/零,因此无论如何它实际上将被初始化为null.

另一方面,如果这是一个局部变量,那么现在有一个未初始化的变量.从你写var …的事实来看,这在字段方面是非法的,这可能对你的问题更正确.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读