根据 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 Apps 中,System.Type operator == 不可用。

如何在 Windows 应用商店应用程序中完全重现 System.Type operator == 的功能?或者,System.Type 的特定相等运算符功能与 Windows 应用商店应用程序无关吗?

最佳答案

所以这里的基本原理是 Equals 是每个类型的虚拟实例方法,这意味着它将使用 vtable 来确定要使用的实现,在运行时,基于调用 Equals 的实际对象的类型(不考虑多变的)。
operator == 可以被认为是一个静态方法(有很多重载)。它不是虚拟的,因此所引用的实现将基于保存对象的变量的编译时类型,而不是基于对象在运行时的实际类型。

这种行为可以通过简单地创建你自己的 static Equals 方法(在你喜欢的任何一种或多种类型上)来复制,这些方法的行为基于两个参数的类型。与使用 operator == 相比,这稍微不太方便输入,但是一旦编译就可以有效地执行相同的操作。

关于c# - .NET Windows Store Apps 和 System.Type - 相当于运算符 ==?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14960573/

10-11 23:07
查看更多