为了账号安全,请及时绑定邮箱和手机立即绑定

C#未初始化的变量有危险吗?

C#未初始化的变量有危险吗?

C#
子衿沉夜 2019-09-26 09:33:27
我熟悉C#规范的5.3节,其中说必须在使用前分配一个变量。在C和非托管C ++中,这是有道理的,因为不会清除堆栈,并且用于指针的内存位置可能在任何地方(导致难以跟踪错误)。但是我给人的印象是运行时并没有真正“未分配”的值。特别是,未初始化的引用类型将始终具有null值,永远不会具有先前调用方法或随机值后遗留下的值。这是正确的吗?还是我错误地认为这些年来检查空值就足够了?您可以在C#中使用真正的非初始化变量吗,还是CLR会处理这个问题,并且总是设置了一些值。
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

这取决于声明变量的位置。在类中声明的变量将使用默认值自动初始化。

object o;void Method(){
    if (o == null)
    {
        // this will execute
    }}

在方法中声明的变量未初始化,但是在首次使用该变量时,编译器会检查以确保已初始化该变量,因此代码将无法编译。

void Method(){
    object o;
    if (o == null) // compile error on this line
    {
    }}


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 736 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信