使用该object.ReferenceEquals方法使用时会有额外的开销((object)obj1 == (object)obj2)吗?
在第一种情况下,将涉及静态方法调用,并且在两种情况下都涉及到对象的某种形式的转换.
即使编译器平衡了那些方法,那么不等式呢?
(object)obj != null
Run Code Online (Sandbox Code Playgroud)
相比于...
!object.ReferenceEquals(obj,null)
Run Code Online (Sandbox Code Playgroud)
我想在某些时候,会在!=运算符内或者应用于ReferenceEquals方法的结果时发生逻辑否定.你怎么看?
还有可读性问题需要考虑.在检查相等性时,ReferenceEquals似乎更清晰,但是对于不平等,可能会错过!前面的内容object.ReferenceEquals,而!=第一个变体中很难忽略.
检查对象上的空引用的最有效方法是什么?我看过各种代码示例,它们有不同的检查方式,以便最有效或者被认为是最佳实践使用的方法如下:
Object.ReferenceEquals(item, null)
item == null
item != null
Object.Equals(item, null)
Run Code Online (Sandbox Code Playgroud)
谢谢
在c#中有没有更短的方法来写这个:
if(myobject!=null){
}
Run Code Online (Sandbox Code Playgroud)
在JavaScript中我们可以这样做:
if(myobject){
}
Run Code Online (Sandbox Code Playgroud)
免责声明:我知道这在JavaScript中也会匹配'true'.这只能用于应该是特定类型对象的变量.
我发现了一些类似的问题,但他们提出的问题略有不同: