今天調了個代碼,發現老是跟預期的結果不一樣,找了半天的原因,一個一個的往回找,終於逮出元凶了!
我今天才發現,下面兩個是不一樣的:
//有問題的代碼 if (Session["uid"] == oFormHR.AuthorizeId && formState != "流程校正中") { //.. } //正確的代碼 if (Session["uid"].ToString() == oFormHR.AuthorizeId && formState != "流程校正中") { //.. }
第一個,現在重新審視了一下,就算Session["uid"]里面存放的是一個String對象,而且值也是相同的,盡管編譯是通過了,但是它們可能永遠都會返回false!!
為啥?因為Session["uid"]是一個Session對象,而后面那貨是個String對象,所以,還是用回我以前舉的一個例子來說吧,下面是原文地址:http://zhidao.baidu.com/link?url=U3nb69YTa6uzph8Iv_YrWtBJfF474A3kG2oU36Y3bYi4PHXXjxnSWnkDeMbCinIdiB7hAm41ewBM8LBa3eoTUa
打個比方吧,比如我有一個類:人
然后我new了兩個實例,注意看下面“代碼”:
人 張三 = new 人();
張三.眼睛 = 2個;
人 李四 = new 人();
李四.眼睛 = 2個;
bool op3 = 張三==李四;
說明:就算張三跟李四一樣有兩個眼睛,但他們不是同一個人,所以“張三==李四”會返回false.