首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >null的显式赋值

null的显式赋值
EN

Stack Overflow用户
提问于 2010-10-08 19:54:11
回答 3查看 1.6K关注 0票数 50
代码语言:javascript
复制
string s1;
string s2 = null;

if (s1 == null) // compile error
if (s2 == null) // ok

我真的不明白为什么需要显式赋值。空变量和未赋值变量有什么区别?我总是假设未赋值的变量被运行时/编译器简单地赋值为null。如果它们不是null,那么它们是什么?

EN

回答 3

Stack Overflow用户

发布于 2010-10-08 20:00:58

为什么需要显式赋值的原因非常简单。当人们试图使用未赋值/未初始化的变量时,这通常是错误的来源。

通过强制开发人员这样做,它消除了当开发人员忘记初始化变量时发生的错误。通过初始化它,你就可以控制它了。

这真的是一件好事!我不知道在一些脚本语言中有多少次我有未初始化或未定义的变量,这些变量需要相当长的时间才能找到^^

票数 12
EN

Stack Overflow用户

发布于 2010-10-08 19:55:57

C#编译器不允许使用未初始化的局部变量。初始未赋值的变量没有初始值。

票数 4
EN

Stack Overflow用户

发布于 2010-10-10 05:51:22

要记住的一件事是,作用域将在其中发挥作用。如果将S1定义为类变量,然后在函数中对其进行测试,编译器就不会停止,代码也会正常运行。原因是变量是在实例化类时初始化的。

在方法内部移动时,很可能在初始化变量之前测试变量时忘记了一些东西。

我看到的另一个警告是字符串默认为什么?(更重要的是,这是在一个不会改变的规范中吗?请记住,空字符串与分配给null的字符串不同。不过,有一种方法可以绕过这个问题,因为您可以改为使用string.IsNullOrEmpty(S1)进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3890206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档