买服务器做网站,免费推广平台排行榜,湖北专升本网站建设,wordpress5.0编辑器是英文喜欢c#, 所以期望也比较高, 也就会留意一些不起眼的小缺陷, 也就会有很多改进的设想, 也就希望能和更多的朋友分享这些发现和畅想. (1)明确赋值检查缺陷 截止到目前的MS C#4.0版编译器为止, 关于明确赋值检查都存在一个令人不爽的诡异问题, 而且也与ECMA标准不一致. 如下例所示…喜欢c#, 所以期望也比较高, 也就会留意一些不起眼的小缺陷, 也就会有很多改进的设想, 也就希望能和更多的朋友分享这些发现和畅想. (1)明确赋值检查缺陷 截止到目前的MS C#4.0版编译器为止, 关于明确赋值检查都存在一个令人不爽的诡异问题, 而且也与ECMA标准不一致. 如下例所示: class DefinitelyAssignedTest
{private static void CheckA(){int value;if (Maybe() Expr(out value)){Console.WriteLine(value); //OK}} private static void CheckB(){int value;if (false Expr(out value)){Console.WriteLine(value); //Error}}private static void CheckC(){int value;if (false Expr(out value) Expr(out value)){Console.WriteLine(value); //OK}}private static void CheckD(){int value;bool temp;if (temp (Maybe() Expr(out value))){Console.WriteLine(value); //Error}}static bool Expr(out int value){value 1;return true;}static bool Maybe(){return (Environment.TickCount 1) 0;}
} 其中仅有A和C是能编译通过的, 而B和D不行. 而事实上这4个例子都是明确赋值的, 而且按照ECMA标准也都应该是明确赋值的. 但当前编译器的实现却有着自己诡异的规则. 虽然这对手写的代码不会带来什么问题, 换个写法就是了, 可是对于代码生成器来说, 却着实添了不少乱. 就想稀世的脸上落了只苍蝇, 无伤大雅, 但确实让人很不爽. 09年6月我把这个问题反馈给了微软, 9月份有了解决方案......实现没改, 没问题,语言标准改了...这样就没有不一致了... 打哪指哪, 先射箭后画靶嘛. 相关链接:https://connect.microsoft.com/VisualStudio/feedback/details/468882/definitely-assigned-after-true-expression-detection-works-improperly# 如果您也喜欢C#语言, 并且发现了问题或有建议, 请反馈给开发者们, 让他们能做的更好.转载于:https://www.cnblogs.com/robird/archive/2010/06/24/1764374.html