使用new操作符來創建對象,其背後到底發生了什麼?
有一個父類Animal,Dog派生於Animal。
class Program{static void Main(string[] args){Dog dog = new Dog();Console.WriteLine("我能調用老祖宗Object的實例方法GetType,顯示結果為:" + dog.GetType() );Console.WriteLine("我能拿到父類的屬性Age=" + dog.Age);Console.WriteLine("我當然能拿到自己的公共字段_weight=" + dog._weight);}}public class Animal{public int Age { get; set; }public Animal(){}}public class Dog : Animal{public decimal _weight;public Dog(){}}
雖然創建了子類Dog的實例,但通過dog實例能調用"老祖宗"System.Object的實例方法,也能獲取到父類的公共屬性Age的值,並且所有的實例字段值為其類型的默認值。
new操作符做的事情大致包括:
→計算Dog類以及所有父類實例字段所占的字節數
→計算Dog類以及所有父類"類型對象指針"和"同步塊索引"所占的字節數
→根據字節數,托管堆分配內存
→先調用所有父類的構造函數,最後調用Dog的構造函數。在這過程中,初始化所有實例字段,字段值為字段類型的默認值或構造函數實參值;初始化"類型對象指針"和"同步塊索引"成員
→把新建的Dog實例的堆地址賦值給棧變量dog
→通過new創建的托管堆對象最終由GC回收
可以的
參考這個對C盤進行清理:
1.關閉系統還原:我的電腦屬性/系統還原/關閉所有磁盤上的系統還原,但是以後就不能用系統還原了!
2.關閉系統休眠:控制面板/電源/休眠/在啟動系統休眠前面的勾去掉
3.移動虛擬內存,我的電腦屬性/高級/性能/設置/高級/更改/選C盤也就是系統盤,選無分頁面,然後把虛擬內存設置到其磁盤,要剩余磁盤空間多的磁盤,比如D,E,F等盤. 設成內存的1.5~2.5倍,大小可設成一樣!
5.清理IE臨時文件夾,internet選項,刪除臨時文件和脫機文件
6.刪除系統日志和程序日志,我的電腦/控制面板/管理工具/計算機管理/事件查看器/應用程序,鼠標右鍵/清除所事件,在依次清除系統日志
7.清理系統緩存:2000系統是:C:\WINNT\system32\dllcache下的所有文件
XP系統是:C:\windows\system32\dllcache下的所有文件 清理系統緩存(打開我的電腦/工具/文件和文件夾選項/隱藏受保護的系統文件的勾去掉在把顯示全部文件勾上)。也可以直接運行sfc.exe /purgecache命令自動刪除。
8.清空回收站
9.刪除c:\windows\SoftwareDistribution\Download下的文件(系統更新時下載的文件如你裝好了更新也就沒有用了)
10.刪除c:\windows\RegisteredPackages下所有目錄
11.刪除C:\WINDOWS\Downloaded Program Files下所有的文件
12.我的電腦 文件夾選項 查看 隱藏已知受系統保護的文件勾去掉,顯示所有文件勾上確定。
13.刪除c:\windows\所有帶$8882305$的文件(系統更新後的備份文件)
zhidao.baidu.com/question/11035955.html
zhidao.baidu.com/question/12223613.html
zhidao.baidu.com/question/14874715.html
......余下全文>>
可以的
參考這個對C盤進行清理:
1.關閉系統還原:我的電腦屬性/系統還原/關閉所有磁盤上的系統還原,但是以後就不能用系統還原了!
2.關閉系統休眠:控制面板/電源/休眠/在啟動系統休眠前面的勾去掉
3.移動虛擬內存,我的電腦屬性/高級/性能/設置/高級/更改/選C盤也就是系統盤,選無分頁面,然後把虛擬內存設置到其磁盤,要剩余磁盤空間多的磁盤,比如D,E,F等盤. 設成內存的1.5~2.5倍,大小可設成一樣!
5.清理IE臨時文件夾,internet選項,刪除臨時文件和脫機文件
6.刪除系統日志和程序日志,我的電腦/控制面板/管理工具/計算機管理/事件查看器/應用程序,鼠標右鍵/清除所事件,在依次清除系統日志
7.清理系統緩存:2000系統是:C:\WINNT\system32\dllcache下的所有文件
XP系統是:C:\windows\system32\dllcache下的所有文件 清理系統緩存(打開我的電腦/工具/文件和文件夾選項/隱藏受保護的系統文件的勾去掉在把顯示全部文件勾上)。也可以直接運行sfc.exe /purgecache命令自動刪除。
8.清空回收站
9.刪除c:\windows\SoftwareDistribution\Download下的文件(系統更新時下載的文件如你裝好了更新也就沒有用了)
10.刪除c:\windows\RegisteredPackages下所有目錄
11.刪除C:\WINDOWS\Downloaded Program Files下所有的文件
12.我的電腦 文件夾選項 查看 隱藏已知受系統保護的文件勾去掉,顯示所有文件勾上確定。
13.刪除c:\windows\所有帶$8882305$的文件(系統更新後的備份文件)
zhidao.baidu.com/question/11035955.html
zhidao.baidu.com/question/12223613.html
zhidao.baidu.com/question/14874715.html
......余下全文>>