在搜索“C# Language Specification, Version 5.0”的各种术语时,似乎没有明确声明比较的 LHS 和 RHS 必须是同一类型,或者能够显式转换,或者通过强制类型转换可以显式转换。
搜索的词和短语包括转换、转换、隐式、显式、if 语句,等等。
凭直觉,人们不会将苹果与橙子进行比较;不管怎样,令人惊讶的是(对我来说),据我所知,这在 C# 语言规范中没有明确说明。
最佳答案
Does the C# Language Specification explicitly state that comparison must be of the same type?
没有。比较运算符 -- < <= > >= == !=
-- 两边不需要有相同类型的操作数。事实上,操作数不需要有类型。 foo >= null
是完全合法的,但是 null
没有类型。
Intuitively, one does not compare apples to oranges; regardless, surprisingly (to me), AFAIK this is not explicitly stated in the C# Language Specification.
直觉上人们是否希望能够将整数与短裤、短裤与小数进行比较,等等?人们是否期望能够将可为空的整数与整数进行比较?如果经理是一种人,那么能够问“这个经理和这个人是同一个人吗?”是否有意义?我认为比较运算符的操作数不需要是同一类型,无论是在编译时还是在运行时,这在直觉上都是显而易见的。
关于c# - C# Language Specification 是否明确规定比较必须是同一类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073222/