隨意使用函數帶來的麻煩

今天寫了這樣一行代碼:

LcName[0] = (string.IsNullOrEmpty(i.JD1Name.Trim()) ? "空" : i.JD1Name.Trim());

本意是當i.JD1Name(數據庫字段)爲空或者null值得時候返回“空”,如果不是null值就返回這個字段的數據,

可是運行的時候每當i.JD1Name爲空的時候就報錯,說使用的對象沒有實例化。

開始搞暈了,後來仔細一看不禁啞然失笑,,

學過編譯原理的朋友都知道,一個運算表達式,從外層運算到裏層運算入棧,然後再逐層出棧計算,

在上面的表達式中,在棧頂的是Trim()運算,運算數就是i.JD1Name,所以,當i.JD1Name是null值得時候

首先會參與一次運算,系統自然就報錯了,這個時候IsNullOrEmpty()函數根本就沒有起作用。

後來改成這樣就沒有問題了:

LcName[0] = (string.IsNullOrEmpty(i.JD1Name) ? "空" : i.JD1Name.Trim());

哈哈,隨意的習慣害人啊,至少耽誤了我不少時間。

今天特做個筆記,低級錯誤,大俠們別笑哦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章