成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET:所有實例共享一個static變量

開發 后端
本文介紹了static變量的作用域,所有的客戶端訪問到的asp.net頁面中static變量都是同一個變量。

在C#中,static變量表示該變量屬于類,而不是類的實例??梢哉f是該類的所有實例共享一個static變量。

asp.net的頁面就是一個類,我們訪問一個頁面。就會在服務器上實例化一個該類的實例,來響應我們的請求?!八袑嵗蚕硪粋€static變量” 這就意味著,所有的客戶端訪問到的asp.net頁面中static變量都是同一個變量。

由于我們每次訪問asp.net頁面都是一個全新的對象,而不是我們上一次訪問的對象。所以上次頁面訪問時我們對頁面中變量的改動都沒有保留。遇到這個問題的時候,很多初學者的直覺就是將這個變量申明為static,自己在測試的時候發現還真的保留住了頁面的狀態。竊喜之余沒有發現這又有引入了另外一個錯誤。因為你要的只是頁面能保留住狀態,而這個狀態是針對一個客戶端的(session的效果)。而得到的結果是只要一個客戶端改變了該值所有的其他客戶端都受到了影響(如同Applicatin的效果)。這種情況下,需要的極有可能就是個ViewState或者是Session。

Application與static變量

Application是通過一個集合保存所有的對象。

強類型:Application中保存的是object,對對象的保存和使用需要作cast動作。對于值類型更需要Box&UnBox。對性能的影響較大。而static變量是強類型的對象。

線程同步:Application將所有的對象放到一個集合,這樣對訪問集合中的任何對象都會鎖定這個集合。假如有Application["A"]、Application["B"]、Application["C"],有線程訪問Application["A"]其他線程不能訪問Application["B"] and Application["C"]。

而static變量,可以根據他們的作用分別放在不同的class當中。這樣可以并行訪問不同的static變量,而不存在線程安全問題。

友情提示:

1. 對static變量,做lock時??梢酝ㄟ^lock(typeof(classname))來鎖定該變量所在的類的類型,達到線程同步的目的。

2. 由于Aplication,static member是全局變量,而我們是在多線程服務器環境寫程序,對他們的使用需要注意線程安全的問題。

asp.net和C++中的static并沒有多少不同,實質上他們都是在編譯期就已存在的地址空間。換句話說,在你Build成功之后,項目的DLL文件中已經存在了這個static變量(或者類)的空間,亦即在你運行時系統載入DLL后這個變量/類的所謂實例已經存在,而且是應用程序所公用,所以你才可以直接使用,同時所有的頁面用的都是同一塊空間。

普通的類你需要new一個instance才可以使用,原因就在于應用程序中間只有聲明而沒有定義,new的時候就在堆里劃分一塊空間給他的一個實例。

一個簡單的實驗,大家就很容易的明白他們之間的區別:新建個簡單的project,添加一個類,類增加一個變量,編譯,記錄dll文件的大??;然后把變量變成static變量(當然你的class也必須成為static的了,想想這是為什么),編譯,記錄dll文件大小;比較兩個dll大小,是不是后面一個比前面大呢?

【編輯推薦】

  1. ASP.NET數組基礎:聲明,表示及范例
  2. ASP.NET編程中的十大技巧(二)
  3. ASP.NET編程中的十大技巧(一)
  4. ASP.NET MVC教程(一):準備工作
  5. ASP.NET MVC Beta的部署問題

責任編輯:book05 來源: 百度空間
相關推薦

2010-01-26 13:15:42

ASP.NET MVC

2009-07-23 16:44:50

XML Web服務使用ASP.NET構造

2009-09-03 16:27:57

ASP.NET回車事件

2011-07-12 16:07:42

OracleToad環境變量

2012-08-27 10:11:43

ASP.NET

2009-08-04 16:24:19

合格的ASP.NET程

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-09-09 22:53:34

ASP.NET 時間控

2009-07-24 15:07:56

ASP.NET上傳文件

2009-07-29 15:55:48

ASP.NET Req

2009-04-23 09:42:39

FubuMVCASP.NET MVCMVC

2011-10-11 09:43:15

ASP.NET MVC

2009-06-19 09:34:20

WCF基本架構ASP.NET

2009-09-11 09:18:17

ASP.NET MVC

2011-12-20 10:02:01

ASP.NET

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2011-04-08 10:15:11

2009-07-30 13:57:39

ASP.NET水晶報表ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区视频 | 久久机热 | 在线免费黄色 | 国产亚洲人成a在线v网站 | 91精品国产色综合久久不卡98 | 亚洲在线免费 | 精品久久久久一区二区国产 | 一区二区精品 | 欧美激情免费在线 | 婷婷综合网 | 色伊人 | 精品一区二区三区四区 | 久久亚洲国产精品 | 婷婷成人在线 | www.久久99 | 日本一卡精品视频免费 | 亚洲中字在线 | 国产99久久精品一区二区300 | 亚洲免费在线视频 | 欧美一级淫片免费视频黄 | 亚洲国产精品久久久久秋霞不卡 | 亚洲国产精品视频 | 欧美乱淫视频 | 91精品国产乱码久久久久久久久 | 日本三级网站在线 | 国产在线视频一区二区 | 久草新在线 | 天堂一区二区三区 | 国产精品日韩一区 | 欧美日韩国产免费 | 久久精品高清视频 | 国产乱码精品一区二区三区中文 | 国产精品免费在线 | 精品日韩欧美一区二区 | 黑色丝袜三级在线播放 | 国产精品99一区二区 | 久久久亚洲成人 | 亚洲一区二区中文字幕 | 91亚洲一区| 国产欧美日韩一区二区三区 | 91精品一区二区 |