因此Int32没有==运算符,但这是有效的代码
bool y = 6 == 5;
这是因为Int32是原始类型集的一部分。它有效地编译成IL中的CEQ。
所以给定一个Type(带反射)如何确定该类型在没有==运算符时支持CEQ?
答案 0 :(得分:3)
规范说(§7.10):
预定义的整数比较运算符是:
bool operator ==(int x, int y); bool operator ==(uint x, uint y); bool operator ==(long x, long y); bool operator ==(ulong x, ulong y);
预定义的浮点比较运算符是:
bool operator ==(float x, float y); bool operator ==(double x, double y);
预定义的十进制比较运算符是:
bool operator ==(decimal x, decimal y); bool operator !=(decimal x, decimal y);
预定义的布尔等式运算符是:
bool operator ==(bool x, bool y); bool operator !=(bool x, bool y);
每个枚举类型都隐式提供以下预定义 比较运算符:
bool operator ==(E x, E y); bool operator !=(E x, E y);
请注意decimal.operator ==
是一种常规方法,而不是内置运算符。我不确定为什么会在那里列出。