主營(yíng)業(yè)務(wù):網(wǎng)站制作 網(wǎng)站優(yōu)化 小程序制作 石家莊網(wǎng)站制作網(wǎng)站建設(shè)有限公司歡迎您!
石家莊閃云網(wǎng)絡(luò)科技有限公司
客服熱線15383239821
如何讓自己的網(wǎng)站更有質(zhì)量?

C# Static

發(fā)布時(shí)間:2010/9/3 16:04:44
有時(shí)候?qū)懗绦驎r(shí)常常遇到這樣的情況:

 
1、定義了變量和方法不知道什么時(shí)候該加上static修飾符。
2、static變量和方法與非static變量和方法有什么區(qū)別?
3、在一個(gè)類的靜態(tài)方法里為什么不能訪問(wèn)該類的非靜態(tài)成員變量和方法?
4、在一個(gè)類的非靜態(tài)方法中為什么可以訪問(wèn)該類的靜態(tài)變量和方法?
5、在靜態(tài)方法中為什么不能用this?
6、靜態(tài)構(gòu)造函數(shù)有什么作用?

 
基于以上問(wèn)題,我發(fā)表自己的看法如下:

 
1、static變量及方法不用實(shí)例化對(duì)象就可以用類名.靜態(tài)變量和類名.靜態(tài)方法這種方式進(jìn)行訪問(wèn),這使得訪問(wèn)更加方便,不用手工實(shí)例化對(duì)象。對(duì)于某些只讀變量和方法來(lái)說(shuō)很適合共享。
2、static與非static最大的區(qū)別就是static類型的變量及方法在調(diào)用的時(shí)候就在內(nèi)存中分配了地址,且這個(gè)地址只有一份,故static可以直接訪問(wèn)。而非static必需手工去實(shí)例化該類,以對(duì)象的方式去訪問(wèn)變量和方法。
3、在一個(gè)靜態(tài)方法里去訪問(wèn)該類的非靜態(tài)變量或方法,由于static是屬于類本身的,是在類被調(diào)用的時(shí)候,static類型就已經(jīng)生成,而非 static此時(shí)并沒(méi)有生成,它不屬于這個(gè)類本身,它是屬于這個(gè)類的對(duì)象。故在沒(méi)有實(shí)例化成對(duì)象的時(shí)候,在靜態(tài)方法中訪問(wèn)非靜態(tài)是根本找不到它們的,它不屬于這個(gè)類。
4、在非靜態(tài)方法中去訪問(wèn)靜態(tài),由于類被調(diào)用時(shí),靜態(tài)變量和方法就已經(jīng)生成,也就是說(shuō)它們屬于這個(gè)類。既然已經(jīng)存在,故不管是在靜態(tài)方法中,還是非靜態(tài)方法中都可以訪問(wèn)到它們。
5、this表明對(duì)象本身,而在靜態(tài)方法中并沒(méi)有對(duì)象概念存在,它只有類本身這個(gè)概念,它和對(duì)象是屬于兩種互拆的狀態(tài),即我中無(wú)你,你中無(wú)我的情況。也就是說(shuō)你用對(duì)象名.靜態(tài)變量或?qū)ο竺?靜態(tài)方法是不可訪問(wèn)的。
6、每個(gè)類都必須有構(gòu)造函數(shù),否則此類無(wú)法實(shí)例化成對(duì)象。而我們有時(shí)定義的類可以不寫它的構(gòu)造函數(shù),這是因?yàn)榫幾g器會(huì)幫我們加上一個(gè)靜態(tài)的空構(gòu)造函數(shù)。這樣才能實(shí)例化。也可以用靜態(tài)構(gòu)造函數(shù)去初始化靜態(tài)變量。

相關(guān)新聞推薦

在線客服 : 服務(wù)熱線:15383239821 電子郵箱: 27535611@qq.com

公司地址:石家莊市新華區(qū)九中街江西大廈4062

備案號(hào):冀ICP備2022000585號(hào)-4