当前位置:  开发笔记 > 编程语言 > 正文

C#:与null比较

如何解决《C#:与null比较》经验,为你挑选了3个好方法。

这些是等价的:

if (null==myobject)
{
//do something 
}

if (myobject==null)
{
//do something 
}

或者他们会产生不同的代码?



1> JaredPar..:

在99%的情况下,此代码是等效的.

一个例外是当有问题的对象的类型覆盖==运算符时.可能会在==中引入一个错误,当一个参数为null时会导致问题.

我之前见过的一个特例如下

public static bool operator==(Student left, Student right) {
  return left.Equals(right);
}

当null在左侧时,这将失败,但在右侧为null时可能不会.

这是一个相当遥远的案例.


@Justice,但不要假设任何性能,相信探查器:)

2> ReinstateMon..:

if将常量放在左边的" "语句的形式是来自C/C++的保留,你可以在if语句中使用任意表达式.

C#的if语句语法要求表达式求值为bool,这意味着if (foo = 0)不能编译.



3> 小智..:

if (null==myobject) {

是一种写if语句的安全方法.它来自C/C++,其中条件是一个被评估为的表达式int.如果结果为零意味着false,其他任何东西都是true.你可以写点像

if (variable == 1) {

但如果你不小心你也可以写

if (variable = 1) { 

在这种情况下,您的赋值总是计算为1,因此始终为true.

您可以编译它并运行它没有任何问题,但结果将不是您所期望的.所以C/C++程序员开始编写类似的东西

if (1 == variable) {

如果拼错它,这将无法编译,所以你总是必须按照你的意思来编写它.这后来成为一种(好的)习惯,你可以在你编程的所有语言中使用它,例如C#.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有