在搜索"C#语言规范5.0版"的各种术语时,似乎没有明确声明比较的LHS和RHS必须属于同一类型,或者能够明确转换,或者通过演员表示明确可转换.
搜索的单词和短语包括转换,强制转换,隐式,显式,if语句等.
直觉上,人们不会将苹果与橙子进行比较; 无论如何,令人惊讶的是(对我而言),AFAIK在C#语言规范中没有明确说明.
C#语言规范是否明确声明比较必须是相同的类型?
编号比较运算符 - < <= > >= == !=
不需要在两侧都有相同类型的操作数.实际上,操作数不需要类型.foo >= null
是完全合法的,但null
没有类型.
直觉上,人们不会将苹果与橙子进行比较; 无论如何,令人惊讶的是(对我而言),AFAIK在C#语言规范中没有明确说明.
直觉上人们希望能够将整数与短路,短路到小数等进行比较吗?是否期望能够将可为空的int与int进行比较?如果一个经理是一个人,那么能够问"这个经理和这个人是一样的吗?"是否有意义?我认为很明显,比较运算符的操作数不需要在编译时或运行时都是相同的类型.