精簡判斷Request或是Session是否為null,進而預設或取值。

  • 23833
  • 0

摘要:精簡判斷Request或是Session是否為null,進而預設或取值。

   

  在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 的例外狀況,

為避免這種狀況造成錯誤,於是在以前就用以下的乖乖牌方法

  1. 預先給定好準備接受傳來值的變數之預設值。
  2. 判斷是不是null。
  3. 傳遞數值。

如下:


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!