記錄乙個兩年前發生的乙個問題

2022-03-02 16:04:44 字數 560 閱讀 7038

事情是這個樣子的,兩年前工作中我寫下了如下的**

//

此處是從伺服器獲取乙個list

list list=new list();

if (list != null || list.count > 0

)

本來我認為這個是很正確的寫法,但是乙個同事當場質疑我說不能這麼寫,我當時是滿腦袋問好????

不能這麼寫?我從學c#的時候我就一直這麼寫,從沒見過出問題。直到他們給我解釋了原因我才知道咋回事。

具體應該這樣寫

//

此處是從伺服器獲取乙個list

list list = new list();

if (list != null

)}

原來,有一部分老的編譯器會執行檢查list==null後仍然會執行||後邊的**,也就是當list==null的時候仍然會執行list.count>0。此處很明顯就會報空指標異常了。

當然這是有些極少數的老的編譯器才會這麼幹,現如今的編譯器兩種寫法都沒問題。

謹以此片文章記錄這個不算錯誤的錯誤。

記錄乙個volatile的問題

遇到乙個關於volatile的問題,目前還未想到原因,先記錄下來。關於volatile的含義及功能這裡不多解釋,直接上 public class volatiletestflag system.out.println a執行緒等待結束。thread bthread newthread new run...

記錄乙個MySQL的問題

昨天做asp.net mvc程式,用mysql.data.entity.ef6做資料連線。程式都是正常的,但就是提交資料的時候總是提示 specified key was too long max key length is 767 bytes異常。搞了好久也不知道啥原因,網上查的方法也通通不好使。...

記錄乙個未知的問題

visual studio一啟用應用程式就提示 操作無法完成,因為該檔案已在xx.exe中開啟 但是我啟動的就是xx.exe啊 然後我盃具的發現debug目錄下所有的dll都被刪除掉了 這個程式依賴很多dll,只能乙個乙個重新生成,又杯具的發現生成完成再啟動還是會遇到上面的問題,重啟vs也還是不行,...