国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C# 2.0 之 static class[2]

2024-07-21 02:24:45
字體:
來源:轉載
供稿:網友
看看什么是 static class 吧,很久以前我就為不能聲明一個 abstract sealed class 而苦惱不已,我在 csdn 上曾經提出過這個問題,可是并沒有獲得共鳴。我得到的回復是這樣的:

abstract 和 sealed一起用?定義abstract的目的就是抽象基類,seal表示不能繼承的實體類,完全是兩回事,怎么可能一起用呢?
abstract表明必須要被繼承,sealed表明不可以被繼承,這兩個是矛盾的,怎么可以一起用呢。

通過查看 il 代碼,我們會發現 static class 實際上就是 abstract sealed class,只不過編譯器在編譯時順便對 static class 的成員修飾符進行檢查而已。

讓我們再來猜測一下 ms 開發人員的想法:他們的目的是想獲得 abstract sealed class 的效果,但卻為語義上的矛盾而苦惱不已,大家想獲得一個優美的解決方式,于是就為 c# 2.0 新增了一個 static 關鍵字,完美的解決了這個問題。

也許有人會問:為什么不是 static class = abstract class + static member limit 而要加上 sealed 的限制呢?理由是繼承一個只有 static 成員的類和重新寫一個類完全沒有區別。為什么這么說呢?因為 static 必然是not virtual,繼承它又能有什么用呢?

static class 還有一個限制,那就是只能從 system.object 繼承,為什么會有這個限制,理由和上面差不多。

每每提到 static 關鍵字,我就想起了 static constructor,感謝 ms 的開發人員提供了這么好的一個特性。但是 c# 提供了 static constructor 卻沒有提供 static destructor,不過在 applied microsoft .net framework programming 一書中 jeffery richter 給我們提供了一個辦法就是通過 system.appdomain.domainunload 事件去達到同樣的效果。

使用 static constructor 要注意的就是這里拋出任何異常都會導致該類型在重新加載 appdoamin 之前不再可用,所以要加倍小心,另外 static contructor 中很容易有兩個類型死鎖的情況發生,在編寫代碼的時候一定要想清楚。



收集最實用的網頁特效代碼!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金寨县| 大宁县| 南靖县| 保德县| 民勤县| 遂川县| 靖江市| 望都县| 定西市| 青田县| 清原| 化德县| 伊通| 保靖县| 鹤山市| 鹤岗市| 邢台县| 平顺县| 双牌县| 博白县| 浙江省| 双流县| 乌拉特后旗| 策勒县| 资兴市| 安康市| 体育| 建昌县| 建始县| 舟曲县| 琼结县| 苏尼特左旗| 呼和浩特市| 平山县| 建始县| 类乌齐县| 永川市| 合水县| 罗甸县| 东乌珠穆沁旗| 聂拉木县|