日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

asp.net(c#) static关键字用法小结

發(fā)布時(shí)間:2025/4/16 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net(c#) static关键字用法小结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自http://www.cnblogs.com/dragonlhf/archive/2007/10/19/930664.html

靜態(tài)變量

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

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

protected void Page_Load(object sender, EventArgs e)
{???????
??? //直接使用“類名.成員”的格式,不能使用“對(duì)象名.成員”的格式,這點(diǎn)與JAVA不一樣,JAVA兩種都可以使用
??? Response.Write(Chinese.Country);????
}

?class Chinese
?{
??? public static string Country = "中國(guó)";
??? 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)方法

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

protected void Page_Load(object sender, EventArgs e)
{????????????
??? Chinese.getCountry();
}

?class Chinese
?{
??? public static void getCountry()
??? {
??????? HttpContext.Current.Response.Write("你好!中國(guó)");
??? }
}

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


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


要理解static,就必須要先理解另一個(gè)與之相對(duì)的關(guān)鍵字,很多人可能都還不知道有這個(gè)關(guān)鍵字,那就是auto,其實(shí)我們通常聲明的不用static修飾的變量,都是auto的,因?yàn)樗悄J(rèn)的,就象short和long總是默認(rèn)為int一樣;我們通常聲明一個(gè)變量:
???? int a;
???? string s;
???? 其實(shí)就是:
???? auto int a;
???? auto string s;
???? 而static變量的聲明是:
???? static int a;
???? static string s;
???? 這樣似乎可以更有利于理解auto和static是一對(duì)成對(duì)的關(guān)鍵字吧,就像private,protected,public一樣;
???? 對(duì)于static的不理解,其實(shí)就是對(duì)于auto的不理解,因?yàn)樗歉话愕?#xff1b;有的東西你天天在用,但未必就代表你真正了解它;auto的含義是由程序自動(dòng)控制變量的生存周期,通常指的就是變量在進(jìn)入其作用域的時(shí)候被分配,離開其作用域的時(shí)候被釋放;而static就是不auto,變量在程序初始化時(shí)被分配,直到程序退出前才被釋放;也就是static是按照程序的生命周期來分配釋放變量的,而不是變量自己的生命周期

轉(zhuǎn)載于:https://www.cnblogs.com/tedbyte/archive/2009/09/07/1561858.html

總結(jié)

以上是生活随笔為你收集整理的asp.net(c#) static关键字用法小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。