Why does the C# compiler translate this != comparison as if it were a > comparison?
Short answer: There is no “compare-not-equal” instruction in IL, so the C# != operator has no exact correspondence and cannot be translated literally. There is however a “compare-equal” instruction (ceq, a direct correspondence to the == operator), so in the general case, x != y gets translated like its slightly longer equivalent (x == y) …