多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 關于c#靜態方法和實例方法的辨析和應用

關于c#靜態方法和實例方法的辨析和應用

來源:程序員人生   發布時間:2014-05-04 23:07:59 閱讀次數:2526次

本文將圍繞c#靜態方法和實例方法討論一下。針對一些觀點,如:"靜態方法是常駐內存", 還有"靜態方法比實例方法先裝載",做一個辨析。同時討論下何時用靜態方法,何時用實例方法。

前幾日,在微軟的好友發給我一個鏈接:《靜態方法和實例化方法之間的區別你知道了嘛? 歡迎討論!! - 問題最終 ...》,然后說這里某些觀點需要澄清一下,希望我寫一篇blog。我當時讀了這篇blog. 文比較短,列舉了靜態方法和實例方法的幾種案例,也沒有論點,然后就請大家討論。后面評論就比blog熱鬧多了。言辭也激提示:點擊查看" onclick="liehuo_larger(this)" alt="" src="/uploadfile/sjk/0913093560-1.jpg" />

圖1

"靜態方法比實例方法先裝載"

這也是那篇blog的評論中某些人提出的觀點。我不知道他們的論據是什么,但是我已經做過實驗,而且也寫過這兩篇blog關于.net反射和metadata加載--致Jeffray Zhao等幾位和firelong和[繼續討論]關于Windows PE和.net assembly的加載來證明.net程序集的加載方式是整個地加載,而不是用到某個metadata才加載該metadata, 用到某個方法才加載該方法。因為靜態方法和實例方法同屬于一個.net類型,而一個.net類型屬于一個.net程序集。在整個地加載一個.net程序集的時候,不管是靜態方法還是實例方法,都隨該程序集全部加載進內存。所以"靜態方法比實例方法先裝載"也是不成立的。

何時用靜態方法,何時用實例方法

先說實例方法,當你給一個類寫一個方法,如果該方法需要訪問某個實例的成員變量時,那么就將該方法定義成實例方法。一類的實例通常有一些成員變量,其中含有該實例的狀態信息。而該方法需要改變這些狀態。那么該方法需要聲明成實例方法。

靜態方法正好相反,它不需要訪問某個實例的成員變量,它不需要去改變某個實例的狀態。我們把該方法定義成靜態方法。

第一種方式, 聲明實例,調用實例方法

當一個類有多個實例,例如學生這個類,實例可以有學生甲,學生乙,學生丙,等等,我們就用第一種方式。在多線程的情況下,只要每個線程都創建自己的實例,那么第一種方法通常是線程安全的。

第二種方式,通過一個靜態的實例,去調用實例方法

這種情況比較特殊,通常是整個程序里該類唯一的一個實例,我們通過調用該實例的實例方法來改變該實例的某些狀態。這一個實例在多線程的情況下,通常是線程不安全的。除非我們給這個實例加鎖。防止其他線程訪問該實例。

第三種方式,直接調用靜態方法

這種情況下靜態方法不需要去改變某個實例的狀態。只要得到少量的參數就可完成既定事情。比如判斷一個文件是否存在,只要給個文件路徑和文件名,就能知道該文件是否存在。

出處:Mike的技術博客

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 中文字幕一级 | 春色视频免费版高清在线观看 | h视频免费 | 国产精品第3页 | 日韩欧美中文字幕出 | 亚洲宅男天堂a在线 | 欧美日韩在线永久免费播放 | 冲田杏梨j和l超乳w真性中出 | 91久久偷偷做嫩草影院免费看 | 日本欧美一区二区三区在线 | 国产精品福利在线观看 | 欧美亚洲另类在线观看 | 亚洲日韩中文字幕天堂不卡 | 色聚网| 69视频在线观看高清免费 | 日韩在线小视频 | jizz欧美大全 | 国产91区精品福利在线社区 | 伊人福利| 天天鲁天天爱天天鲁天天 | 亚洲涩福利高清在线 | 中文字幕一区久久久久 | 中文字幕亚洲精品 | 性欧美videos hd高清 | 波多野结衣免费免费视频一区 | 欧美精品video | 亚洲福利一区二区三区 | 国产 日韩 一区 | 国产亚洲天堂 | 男人午夜 | 成人免费视频视频在线不卡 | 国产叼嘿视频 | 精品国产高清毛片 | 国产一区二区三区免费播放 | 午夜在线播放 | 欧美日本在线一区二区三区 | h小视频在线 | 亚洲成人高清在线观看 | 亚洲天堂一区二区 | 亚洲ass| 免费羞羞网站 |