在C#與Asp.net中以往在要取得 Request["xx"] 或是 Session["xx"] 或是其它有可能為 null 的變數
的值時, 例如:
string str_Keyword = Request["Keyword"].ToString() ;
string str_UserPK = Session["UserPK"].ToString();
如果不加以先判斷是否為null,一旦傳來的參數並沒有這個Query String,代表這個變數其值為null,假使
如上方一樣直接指定到已經確定的型別,就會產生錯誤,擲回 InvalidOperationException 的例外狀況,
為避免這種狀況造成錯誤,於是在以前就用以下的乖乖牌方法
-
預先給定好準備接受傳來值的變數之預設值。
-
判斷是不是null。
-
傳遞數值。
如下:
string str_Keyword = "N/A";
if (Request["Keyword"] != null)
{
str_Keyword = Request["Keyword"].ToString();
}
.........
以上方式的確是可以得到想要的結果,然而,這樣的寫作方法,先別論這得多敲了幾下鍵盤而讓手
指多了n次的敲擊反作用回饋(ps.就像揮拳揍人自己手也會痛。),單就視覺欣賞角度來看,半點瀟灑
的氣息都沒有,其實用點小技巧來點綴,那就可以Bling Bling了... 如下:
string str_Keyword = (Request["Keyword"] != null) ? Request["Keyword"].ToString() : "N/A" ;
現在就變帥氣多了,這段程式碼可以用以下白話文解釋:
str_Keyword 字串先生喊話 : ㄟ!! 你那個 Request["Keyword"] 現在是怎樣,是null還是不是?,
回給我個訊息吧! XD
除了以上之外,C#也提供了一個更方便的去判斷變數是否為null然後傳值的做法就是---- ??
string str_1 = str_2 ??"N/A"
這段程式碼一樣可以用以下白話文解釋:
str_1 字串先生看著對面心想 "ㄟ!! str_2 你 是怎回事ㄚ?不是null就快過來吧,不過要是你是null的話,那我
就要找後面那一個了喔!!" XD!
留言列表