哎,C#的设计者们为了证明C#是C/C++的发展,竟然不惜改变switch的语法。
这个改变对初学者来说很致命,就是通常说的非常subtle的问题。
1、语法上和C/C++是一致的。
2、case语句一旦有了代码,就不允许fall through,而且必须用break结束当前case。
3、紧挨着一起的几个空case语句可以看做是一个“组”,只有空case语句才允许fall through。
4、如果像实现C/C++的fall through功能,必须用goto case VALUE或者goto default这种奇怪的语法。
C#的设计者认为,这样可以让开发人员书写更加安全的代码。但是就我个人而言,只有初学的时候犯了不该的fall through毛病,以后10年间从来没有犯过类似错误。我本人觉得这是一个非常愚蠢的决定,只是纯粹为了展示“我们做了改进”这个目的而已。当然,这可能不是Hejlsberg本人的意愿。
这个改变对初学者来说很致命,就是通常说的非常subtle的问题。
1、语法上和C/C++是一致的。
2、case语句一旦有了代码,就不允许fall through,而且必须用break结束当前case。
3、紧挨着一起的几个空case语句可以看做是一个“组”,只有空case语句才允许fall through。
4、如果像实现C/C++的fall through功能,必须用goto case VALUE或者goto default这种奇怪的语法。
C#的设计者认为,这样可以让开发人员书写更加安全的代码。但是就我个人而言,只有初学的时候犯了不该的fall through毛病,以后10年间从来没有犯过类似错误。我本人觉得这是一个非常愚蠢的决定,只是纯粹为了展示“我们做了改进”这个目的而已。当然,这可能不是Hejlsberg本人的意愿。