C#中 Const 、readonly、static 之間的差別和關係
static 修飾的變數意味著它屬於類級別,不需要例項化就可以直接通過 類名.變數名 來用。
const 預設是 static 型別,因此屬於類級別,它的特點是在編譯的時候用const修飾的變數的值就已經是明確知道的定值,而不能是一個計算表示式。而且,只能在宣告的時候給定它的值,以後都不可以改。
readonly 不是static型別,屬於例項級別,因此不能通過 類名.變數名 來用。只能通過 例項.變數名 來用。但是同const不同的是,它屬於執行時的常量,也就是說,readonly可以在執行時才確定它的值,一旦確定以後也不可以更改(建構函式外)。需要注意的是:readonly的值可以在宣告的時候指定,也可以自愛建構函式內部進行指定,其他地方均不可修改
readonly 允許把一個欄位設定成常量,但可以執行一些運算,可以確定它的初始值。
因為 readonly 是在計算時執行的,當然它可以用某些變數初始化。
readonly 是例項成員,所以不同的例項可以有不同的常量值,這使readonly更靈活。
readonly 關鍵字與 const 關鍵字不同。
1. const 欄位只能在該欄位的宣告中初始化。
readonly 欄位可以在宣告或建構函式中初始化。因此,根據所使用的建構函式,readonly 欄位可能具有不同的值。
2. const 欄位是編譯時常數,而 readonly 欄位可用於執行時常數。
3. const 預設就是靜態的,而 readonly 如果設定成靜態的就必須顯示宣告。
4.const 對於引用型別的常數,可能的值只能是 string 和 null。
readonly可以是任何型別
const 預設是 static 型別,因此屬於類級別,它的特點是在編譯的時候用const修飾的變數的值就已經是明確知道的定值,而不能是一個計算表示式。而且,只能在宣告的時候給定它的值,以後都不可以改。
readonly 不是static型別,屬於例項級別,因此不能通過 類名.變數名 來用。只能通過 例項.變數名 來用。但是同const不同的是,它屬於執行時的常量,也就是說,readonly可以在執行時才確定它的值,一旦確定以後也不可以更改(建構函式外)。需要注意的是:readonly的值可以在宣告的時候指定,也可以自愛建構函式內部進行指定,其他地方均不可修改
readonly 允許把一個欄位設定成常量,但可以執行一些運算,可以確定它的初始值。
因為 readonly 是在計算時執行的,當然它可以用某些變數初始化。
readonly 是例項成員,所以不同的例項可以有不同的常量值,這使readonly更靈活。
readonly 關鍵字與 const 關鍵字不同。
1. const 欄位只能在該欄位的宣告中初始化。
readonly 欄位可以在宣告或建構函式中初始化。因此,根據所使用的建構函式,readonly 欄位可能具有不同的值。
2. const 欄位是編譯時常數,而 readonly 欄位可用於執行時常數。
3. const 預設就是靜態的,而 readonly 如果設定成靜態的就必須顯示宣告。
4.const 對於引用型別的常數,可能的值只能是 string 和 null。
readonly可以是任何型別
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-628714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- c# const_static readonlyC#
- const和readonly的區別
- C#中const 和 readonly 修飾符的用法詳解C#
- const、define 和 static 的區別
- 成員方法與const之間的關係
- FAILGROUP和REDUNDANCY之間的關係關係!AI
- iOS中的static const extern關鍵字iOS
- [摘]struts+spring+hibernate之間的關係與差別(ZT)Spring
- const與static的區別
- C/C++中Static和Const的作用C++
- UML中類之間的關係
- tablespace和datafile之間的關係
- C++中的static成員、static const成員和const成員的初始化C++
- Android 中Activity,Window和View之間的關係AndroidView
- QT中類之間的關係圖QT
- EXPLAIN PLAN FOR 和 SET AUTOTRACE之間的差別AI
- Window, WindowManager和WindowManagerService之間的關係
- #define、const、typedef的差別
- C中的auto、static、register、extern、const和volitate
- iOS之const,static,extern使用iOS
- 大話UML中類之間的關係
- CSS系列:CSS中盒子之間的關係CSS
- C++ static、const和static const變數 以及它們的初始化C++變數
- 類之間的關係
- 黑客和開源革命之間的關係黑客
- .NET科普:.NET簡史、.NET Standard以及C#和.NET Framework之間的關係C#Framework
- 順序控制和狀態機之間的差別
- http中session和cookie的區別和關係HTTPSessionCookie
- 專案管理中各系統之間的關係專案管理
- c#之readonly小記C#
- 網站和伺服器之間的關係網站伺服器
- 如何理解Nginx、uWSGI和Flask之間的關係?NginxFlask
- SDK、JDK、JRE 和JVM 之間的關係JDKJVM
- 【java】類之間的關係Java
- define巨集定義和const常量定義之間的區別
- Flutter 知識梳理 (Dart) - Dart 中 static, final, const 區別FlutterDart
- 效能測試中,TPS和RT之間的關係,你知道嗎?
- 在Linux中,Unix和Linux之間的關係是什麼?Linux