前不久看到網上有篇文章介紹在.net中可以不需要使用session來傳遞變數,提出建立乙個類,在類中建立乙個靜態變數(static)來代替session變數,需要使用變數時可以直接通過類名訪問靜態變數。我認為這種方法是錯誤的,文章作者沒弄清session和靜態變數的區別,下面我介紹這兩者的區別:
首先說明session,是儲存特定使用者會話所需的資訊。這樣,當使用者在應用程式的 web 頁之間跳轉時,儲存在 session 物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。當使用者請求來自應用程式的 web 頁時,如果該使用者還沒有會話,則 web 伺服器將自動建立乙個 session 物件。當會話過期或被放棄後,伺服器將終止該會話。
假設,使用者s1訪問web站點,產生乙個session("user")=s1,則在此會話有效期內,使用者s1訪問的session("user")一直是s1,如果此時使用者s2又訪問web站點,則產生的session("user")=s2,在s2會話有效期內,session("user")一直是s2
其次類中的靜態變數,是指類不需要被例項化就可初始化的變數,假設有這樣的類
class userinfo{
static string user
s1訪問時,userinfo.user=s1,而s2訪問後,userinfo.user=s2,這樣s1再訪問**,需要呼叫user變數時,其值就是s2了,與session是不同的,所以我們一定要確實搞懂session的作用,以及類的概念,否則程式就不會正確執行。
靜態變數與非靜態變數之間的區別
學習ios時候經常遇到有static修飾的變數和沒有static的變數,在ios中主要用到 它們之間的區別是 如 static nsstring identify identify 與nsstring identify identify 1 作用範圍不一樣,有static修飾的identity的內容...
靜態變數 非靜態變數的區別
c 變數根據定義位置的不同,具有不同的作用域,作用域可分為6種 全域性作用域,區域性作用域,語句作用域,類作用域,命名作用域和檔案作用域。從作用域看 全域性變數具有全域性作用域。全域性變數只需在乙個原始檔中定義,就可以作用於所有的原始檔。當然,其他不包括全域性變數定義的原始檔需要用extern關鍵字...
靜態變數與例項變數的區別
在語法定義上的區別 靜態變數前要加上static關鍵字,而例項變數前則不加。在程式運算時候的區別,例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態的變數不屬於某個例項變數,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,不用建立任何的...