Att*_*lah 3 c# compiler-construction
最近,我观看了一些关于C#异步错误的视频,并与朋友们进行了讨论.
说编程语言有错误是否正确?或者你只能说编译器有bug吗?
两者有什么区别?
如果由于某种原因设计不好(例如,通过Java,IMO中的声明类型的表达式调用静态方法的能力),该语言就有一个设计缺陷.
如果规范是矛盾的或者不表达作者想要表达的内容,则该语言有错误(IMO).(例如,我认为C#语言规范中存在一些关于类型推断的错误.)
如果编译器无法正确实现规范,则会出现错误.
编辑:我发现了一个spec bug的例子,它比类型推断更简单...
在C#4规范中,第7.3.1节规定:"除了赋值运算符,所有二元运算符都是左关联的".
第7.13节声明:"空合并运算符是右关联运算符"
由于空合并运算符是非赋值二元运算符,这是一个矛盾,因此(IMO)是一个错误.(在Stack Overflow问题中也有人提到过.)
null合并运算符还提供了我在回答该问题时发现的编译器错误的示例 ......
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |