And*_*son 3 .net c# equality system.type windows-store-apps
根据公认的答案,这个 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.
Run Code Online (Sandbox Code Playgroud)
在.NET for Windows Store应用程序中,System.Type运算符==不可用.
我怎样才能完全再现的功能System.Type operator ==在Windows应用商店中的应用程序?或者,特定的相等运算符功能是否System.Type与Windows应用商店应用无关?
所以这里的基本原则是Equals每种类型的虚拟实例方法,这意味着它将使用vtable在运行时根据调用的实际对象Equals的类型(忽略变量的类型)确定要使用的实现.
operator ==可以被认为是一个静态方法(有很多重载).它不是虚拟的,因此所引用的实现将基于保存对象的变量的编译时类型,并且不会基于对象的实际类型在运行时的内容.
可以通过简单地创建自己的static Equals方法(根据您喜欢的任何类型或类型)来复制此行为,该方法基于两个参数的类型而行为.输出比使用稍微方便一些operator ==,但编译后确实有效.