.NET Windows应用商店应用和System.Type - 相当于运营商==?

时间:2013-02-19 15:00:49

标签: c# .net windows-store-apps equality system.type

根据对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应用商店应用无关?

1 个答案:

答案 0 :(得分:5)

因此,这里的基本原则是Equals是每种类型的虚拟实例方法,这意味着它将使用vtable在运行时根据调用的实际对象的类型确定要使用的实现Equals(忽略变量的类型)。

operator ==可以被认为是一种静态方法(有很多重载)。它不是虚拟的,因此引用的实现将基于包含对象的变量的编译时类型,而不是基于对象的实际类型在运行时的内容。

可以通过简单地创建自己的static Equals方法(根据您喜欢的任何类型或类型)来复制此行为,这些方法基于两个参数的类型而行为。输入比使用operator ==稍微方便一些,但是一旦编译就会有效。