溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中static關鍵字如何使用

發(fā)布時間:2021-07-12 09:47:02 來源:億速云 閱讀:212 作者:Leah 欄目:編程語言

ASP.NET中static關鍵字如何使用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

靜態(tài)變量

當我們編寫一個類時,其實就是在描述其對象的屬性和行為,而并沒有產(chǎn)生實質(zhì)上的對象,只有通過new關鍵字才會產(chǎn)生出對象,這時系統(tǒng)才會分配內(nèi)存空間給對象,其方法才可以供外部調(diào)用。

有時候,我們希望無論是否產(chǎn)生了對象或無論產(chǎn)生了多少對象的情況下,某些特定的數(shù)據(jù)在內(nèi)存空間里只有一份,例如所有的中國人都有國家名稱,每一個中國人都共享這個國家名稱,不必在每一個中國人的實例對象中都單獨分配一個用于代碼國家名稱的變量。例子:

protected void Page_Load(object sender, EventArgs e)  {  //直接使用“類名.成員”的格式,不能使用“對象名.成員”的格式,這點與JAVA不一樣,JAVA兩種都可以使用  Response.Write(Chinese.Country);   }    class Chinese   {  public static string Country = "中國";  public void getCountry()  {  //類中的成員方法也可以直接訪問靜態(tài)成員變量  HttpContext.Current.Response.Write("你好!" + Country);  }  }

需要注意的是:不能把任何方法體內(nèi)的變量聲明為靜態(tài),如下面這樣是不行的:

public void getCountry()  {  //類中的成員方法也可以直接訪問靜態(tài)成員變量  HttpContext.Current.Response.Write("你好!" + Country);  static int i = 1;  }

靜態(tài)方法

我們有時也希望不必創(chuàng)建對象就可以調(diào)用某個方法,換句話說也就是使該方法不必和對象綁定在一起。要實現(xiàn)這樣的效果,只需要在類中定義的方法前加上static關鍵字就可以了,我們稱這種方法為靜態(tài)成員方法,還可以在類的非靜態(tài)成員方法中象訪問其他靜態(tài)方法一樣去訪問這個靜態(tài)方法,例子:

protected void Page_Load(object sender, EventArgs e)  {   Chinese.getCountry();  }    class Chinese   {  public static void getCountry()  {  HttpContext.Current.Response.Write("你好!中國");  }  }

注意:在靜態(tài)方法里只能直接調(diào)用同類中其他的靜態(tài)成員(包括變量和方法),而不能直接訪問類中的非靜態(tài)成員。這是因為,對于非靜態(tài)的方法和變量,需要先創(chuàng)建類的實例對象后才可以使用,而靜態(tài)方法在使用前不用創(chuàng)建任何對象。

const和static readonly的確很像:通過類名而不是對象名進行訪問,在程序中只讀等等。在多數(shù)情況下可以混用。
二者本質(zhì)的區(qū)別在于,const的值是在編譯期間確定的,因此只能在聲明時通過常量表達式指定其值。而static readonly是在運行時計算出其值的,所以還可以通過靜態(tài)構造函數(shù)來賦值。

要理解static,就必須要先理解另一個與之相對的關鍵字,很多人可能都還不知道有這個關鍵字,那就是auto,其實我們通常聲明的不用static修飾的變量,都是auto的,因為它是默認的,就象short和long總是默認為int一樣;我們通常聲明一個變量:

int a;   string s;

其實就是:

auto int a;   auto string s;

而static變量的聲明是:

static int a;   static string s;

這樣似乎可以更有利于理解auto和static是一對成對的關鍵字吧,就像private,protected,public一樣;

對于static關鍵字的不理解,其實就是對于auto的不理解,因為它是更一般的;有的東西你天天在用,但未必就代表你真正了解它;auto的含義是由程序自動控制變量的生存周期,通常指的就是變量在進入其作用域的時候被分配,離開其作用域的時候被釋放;而static就是不auto,變量在程序初始化時被分配,直到程序退出前才被釋放;也就是static是按照程序的生命周期來分配釋放變量的,而不是變量自己的生命周期

關于ASP.NET中static關鍵字如何使用問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI