C#編譯時與運行時


曾幾何時,對C#編譯時與運行時的理解總是不是那么明顯。以下對此部分說明一下自己的理解。

定義

編譯時

將C#程序編譯成中間代碼的過程。其過程是對程序進行詞法分析,語法分析等。

運行時

就是程序最終分配內存運行的過程。在運行的過程中也需要進行類型檢查。例如數組是否越界檢查,除零錯誤檢查等

編譯時常量與運行時常量

編譯時常量用const關鍵字定義,例如 public const double pi=3.14159。注意點:

1、編譯時常量必須在定義時賦值

2、除string外的引用類型(包括可空類型)只能定義編譯時常量為null,相當於編譯時常量不可通過new進行初始化

3、結構類型不能定義為常量,例如DateTime類型不可定義編譯時常量。

4、編譯時常量一旦賦值就不能再改變其值。

 

運行是常量用readonly定義,它是在程序加載到內存中運行后才確定其值的。其值可以通過以下幾種方式賦值:

1、定義時賦值

2、類的構造函數內賦值。

 

對於性能而言:編譯時常量在編譯時已經確認並且不可修改,而運行時常量則是在運行時才確定。所以編譯時常量在性能上優於運行時常量。但是運行時常量靈活性優於編譯時常量。所以其應用需要看具體情況而定。

 

 

 


免責聲明!

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



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