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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

不要笑!写 | 还是 || ,还真是一个问题

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不要笑!写 | 还是 || ,还真是一个问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這么簡單的問題還寫?先不要笑。打開你代碼量最多的項目,搜索|或者&,看看有多少條這樣的代碼!

前不久,我在dotnet/machinelearning上提交了一個pull request。修改內容是把"|"改成"||", 把"&"改成"&&"。

你猜包含多少修改?總共46個文件,近200處修改!!!

為什么是問題

簡單來說,這些都是二元邏輯運算符。只是"|"和"&"運算符始終計算兩個操作數,"||"和"&&"運算符僅在必要時才計算右側操作數。

問題就出在始終計算上。

對于下面的代碼,你覺得有什么問題:

private?void?Test(User?user) {if?(user?==?null?|?user.Name?==?""){Console.WriteLine("公眾號“My?IO”");} }

當程序運行時,如果碰到user對象為null,還是會計算user.Name,這會導致NullReferenceException。而編譯時不會有任何問題,因為是符合語法的。

因此,做邏輯判斷時,應始終使用"||"和"&&"運算符。

什么時候用"|"和"&"

為整形做位運算,也就是對1/0的運算,才是它們應該起作用的位置:

var?method?=?type.GetMethod("MethodName",?System.Reflection.BindingFlags.Public?|?System.Reflection.BindingFlags.Instance);

結論

其實,大多數這種錯誤是輸入錯誤造成的。只是顯示不明顯,而且編譯器也不會做任何提示,所以容易被忽略,成為潛在的錯誤(相信微軟的程序員水平不會那么低的)。

個人建議,盡量使用靜態代碼掃描工具,可以有效減少或避免這類問題的發生。

如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“,記住我!

總結

以上是生活随笔為你收集整理的不要笑!写 | 还是 || ,还真是一个问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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