我在几个使用if(Is.NotNull(SomeObject))而不是if(SomeObject!= null)的项目中遇到了一些代码。这两种方法有什么区别吗?什么时候会使用某种特定的方法,还是只是一种风格选择?Is.NotNull和!= null之间的区别
回答
我看过Is.Not.Null
作为NUnit的一部分,以及来自Rhino.Mocks的Is.NotNull
。
通常功能不会有任何不同 - Is.NotNull
的缺点只是为了更“流利地”表达您的单元测试,或者自然地表达。关于测试的可读性已经有很多讨论,流畅的语法背后的想法是,当你从左到右阅读时,它会形成一个描述代码行正在做什么的句子。
您示例中的Is
类型不是我之前在基类库中见过的类型。这听起来像是某人在贵公司或其他地方写的东西,或许是“流利”图书馆的一部分。
还有可以会有细微的差别,如果SomeObject
表达式的编译时间类型已经重载!=。我希望希望尽管如此,假设一切都已经得到合理实施,那么它最终不会有什么区别。
虽然很难确切地知道这里发生了什么,因为Is.NotNull
不是基本类库的一部分,据我所知...这些项目是否使用其他实用程序库?这些是在单元测试还是生产代码?
啊,你说得对,它不是基类库的一部分,它是我们在这里定制的外部程序集的一部分。该方法是在System名称空间中的一个名为“Is”的类中实现的,因此导致它认为它是BCL的一部分。谢谢你的帮助! – tbreffni 2009-10-09 14:45:00
例如,您可能需要查看Is.NotNull(),看它是否在对象的内部查找以确定是否设置了任何值。
这可能是一个对象由于更多的原因被认为是空的,而实际上是空的(或未设置)对象值。这可能是因为如果某些属性未设置必须设置,那么它也将被视为空。
可能有区别。如果SomeObject有一个等号/不等于超载可能就不会被称为出于同样的原因这两个语句是不同的:
if(x == null) ...
- 或 -
if(((object)x) == null) ...
后者将使用引用相等,而前者可能会使用操作员超载。
- 1. PHP中NULL和null之间的区别
- 2. != null和!== null之间有什么区别?
- 3. MySQL之间的区别是NOT NULL和!= ''
- 4. mySlickgrid.destroy()和mySlickgrid之间的区别= null
- 5. undefined和null之间有什么区别?
- 6. DML中的NULL和NULL(“”)之间的区别
- 7. null ==对象和对象== null之间的区别
- 8. 这些(bCondition == NULL)和(NULL == bCondition)之间有什么区别?
- 9. '+ ='和'= +'之间的区别?
- 10. {!!之间的区别!!}和{{}}
- 11. ==和case之间的区别?
- 12. '#','%'和'$'之间的区别
- 13. | =和^ = css之间的区别
- 14. “%〜dp0”和“。\”之间的区别?
- 15. .eq之间的区别。和==
- 16. ==和.equals()之间的区别?
- 17. `%in%`和`==`之间的区别
- 18. 在Matlab中NULL和空矩阵之间的区别
- 19. null和空(“”)Java字符串之间的区别
- 20. 空的BSTR和NULL BSTR之间应该有区别吗?
- 21. Typescript - null和undefined之间的区别是什么?
- 22. null之间的区别?和空?在计划
- 23. if(args.Length <1)和if(args.Length == 0 || args == null)之间的区别
- 24. JavaScript检查null与undefined以及==和===之间的区别
- 25. SPFile和PublishingPage类别之间的区别
- 26. System.Timers.Timer Enabled = true和.Start()之间的区别Enabled = true和.Start()之间的区别
- 27. myNullableLong.HasValue和myNullableLong!= null之间是否有区别?
- 28. NSthread和NStimer和NSNotifcation之间的区别?
- 29. Java和C#和.NET之间的区别
- 30. sys.log()和console.log()和console.error()之间的区别?
有趣...我怀疑这是它创建的原因,但也许它不应该放在System命名空间中。感谢您的洞察力。 – tbreffni 2009-10-09 14:49:01
我同意...... NUnit版本非常烦人。如果你一起使用NUnit和Rhino,它就不得不完全限定一切。 – womp 2009-10-09 15:47:08