日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

吹毛求疵C#(1)明确赋值检查缺陷

發布時間:2024/7/19 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吹毛求疵C#(1)明确赋值检查缺陷 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

喜歡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

總結

以上是生活随笔為你收集整理的吹毛求疵C#(1)明确赋值检查缺陷的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。