C# new和初始化


雖然知道使用new可以創建對象,但一直不是很理解初始化和new等知識的具體。

通過8個問題和需求,了解相關知識。

了解問題和需求

1.new 的三個步驟

2.初始化是什么意思。

3.變量聲明后和變量賦值為null或變量調用了new的區別。

4.字段不是變量。

 

一、new的三個步驟:

1 在棧或者堆中開辟空間,空間的大小由類決定,進行內存空間指向。

2 在開辟的控件中進行創建對象

個人理解創建對象就是,在內存空間中存放字段,但是字段依然沒有進行數據存放的內存空間指向,雖然這個對象在內存中占了空間,但是沒有進行具體分配。

3 進行初始化。

二、初始化:

初始化就是調用構造函數,對所有的字段進行賦值,賦值為默認值。

引用類型為null。

值類型int為0,double為0.0。

個人理解:讓字段具有默認值后,進行了空間的分配,內存中存儲的就是對應的實際值,null表示我沒有進行具體的使用,但是我有存儲數據的空間。

三、變量聲明后和變量賦值為null或變量調用了new的區別。

主要區分函數中的變量和對象中的字段的區別。

3.1變量聲明后,沒有進行賦值的含義:

聲明未賦值,會無法生成,提示‘使用了未賦值的變量’。

通過Reflecter可以看到,聲明變量未賦值,實際是不存在的,那么就是說沒有進行分配內存。

3.2變量賦值為null

表明變量具有內存空間,但是內存中什么也不存在。

3.3變量調用new

變量中存在了對象也就是存在了字段,只是字段進行了賦值,賦值為默認值。

四、字段不是變量。

通過3和4感受一下變量和字段的區別。

變量存在函數中,字段是類的成員。

類中函數調用字段或者對應的屬性,只會出現為null的情況。

類中函數聲明變量,會出現無法編譯的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM