根据对this StackOverflow问题的接受回答,System.Type.Equals
方法与System.Type operator ==
之间存在差异:
a runtime type (represented by the internal type RuntimeType), managed by
the CLR is not always the same as a Type, which can be extended. Equals
will check the underlying system type, whereas == will check the type itself.
在 .NET for Windows Store应用中,System.Type operator ==不可用。
如何在 Windows应用商店应用中完全重现System.Type operator ==
的功能?或者,System.Type
的特定相等运算符功能与 Windows应用商店应用无关?
答案 0 :(得分:5)
因此,这里的基本原则是Equals
是每种类型的虚拟实例方法,这意味着它将使用vtable在运行时根据调用的实际对象的类型确定要使用的实现Equals
(忽略变量的类型)。
operator ==
可以被认为是一种静态方法(有很多重载)。它不是虚拟的,因此引用的实现将基于包含对象的变量的编译时类型,而不是基于对象的实际类型在运行时的内容。
可以通过简单地创建自己的static
Equals
方法(根据您喜欢的任何类型或类型)来复制此行为,这些方法基于两个参数的类型而行为。输入比使用operator ==
稍微方便一些,但是一旦编译就会有效。