程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#使用 new 操作符構造新對象中做了一些什麼 (簡單版)

c#使用 new 操作符構造新對象中做了一些什麼 (簡單版)

編輯:C#入門知識

平時new算是使用非常頻繁的一個關鍵字

這裡只是描述 new object()   這種類型的作用

其他的暫時不涉及到,

本文的內容也比較簡單,就列出了一些常用的流程

 

1.在第一次訪問某個程序集的時候 (會加載對應的程序,例如需要new的對象在其他的dll裡面)

  其實步驟一中有很多其他的內容,不過這裡就不詳細描述了,因為用的比較少

  如果找不到dll這個時候就會拋出異常

2.給所有靜態成員賦值(static)

  在c#中賦值的順序看起來和代碼從上至下的順序一模一樣,不過不保證以後的.net版本和編譯器也是這樣,因此不要依賴於代碼的先後關系

3.調用靜態構造函數(..ctor)

  靜態構造函數自始至終只調用一次. 如果如果要搞單例模式,放在這裡初始化也是ok的,

  靜態構造函數如果拋出異常....那麼在本次應用程序的生命周期中,這個類的所有成員將都不能訪問,一訪問就會拋出異常System.TypeInitializationException.

  所以在靜態構造函數中需要謹慎,最好是try catch,如果不是非常嚴重的錯誤的話.

  第2點中說的先後關系可以放在構造函數中順序執行

4.如果這個類有父類,那麼先調用父類的構造函數,(如果父類還有父類,那麼繼續調用父類的父類的.......)

  一路調用到最高級別,如果想調用父類的特定構造函數 可以使用base(.....)

5.初始化所有實例成員

6.如果存在this(...) 代表要先調用其他構造函數

7.最後開始調用構造函數

  一般來說構造函數要盡量的輕量級,

    

這裡忽略了很多關於詳細的內容,例如 靜態構造函數(也就是類型構造函數) 中具體做了一些什麼

 

PS1: 值類型也是可以   int i = new int();   不過實際上和int i=0; 沒區別.當然你自己定義的值類型是可以弄一些有用的構造函數的

PS2: 這裡也省略了很多關於內存分配

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved