c# - 检查实际的空 System.Object 是否等于空 system.object

标签 c# clr

考虑一下:

var o = new object();

我如何在运行时检查 o 是否与 new object() 相同。

这失败了:

  var o = new object();
  var eq1 = o.Equals(new object());
  var eq2 = o.Equals(default(object));
  var eq3 = o == new object();
  var eq4 = Object.Equals(o, new object());
  var eq5 = Object.ReferenceEquals(o, new object());

所有 eq 变量都是 false

编辑:我想说 onew object 而不是,比如说,重新分配。 本质上,检查运行时类型就足够了。

最佳答案

如果您知道两个 new object() 不同并且只想检查您的对象是否属于 Object 类型,您可以使用 GetType并对照 typeof 检查:

var o = new object();
bool eq = o.GetType() == typeof(object); // True

int i = new Int32();
bool eq2 = i.GetType() == typeof(object); // False

关于c# - 检查实际的空 System.Object 是否等于空 system.object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578133/

相关文章:

c# - Selenium Nunit 插件安装异常

C#如何获取非系统程序集

c# - 装箱和拆箱

.net - 每个 CLR 或每个进程是否有一个托管堆?

.net - 是否有任何相当成熟的 .Net CLR 的 Lisp/Scheme/Clojure 编译器?

.net - 当 .NET 崩溃报告中的 P9 "bucket"包含乱码而不是导致崩溃的异常名称时,这意味着什么?

c# - DataContractJsonSerializer 没有看到 DataMemberAttribute

c# - 为什么 .Equals 在此 LINQ 示例中不起作用?

c# - ArrayList.Sort() 与 IComparable 实现

c# - CLR 中的数组边界检查消除?