C#靜態(tài)變量使用心得淺析
C#靜態(tài)變量的使用,我們是如何的呢?下面就說一下具體的C#靜態(tài)變量使用心得,對(duì)于在定義常量的時(shí)候,到底是用const來定義還是readonly來定義。在此書中,提到了一個(gè)關(guān)于使用const會(huì)產(chǎn)生潛在的bug。
就是在程序中使用DLL類庫某個(gè)類的靜態(tài)常量時(shí),如果在類庫中修改靜態(tài)常量的值,其它接口沒有發(fā)生變化,一般來說,程序調(diào)用端是不需要重新編譯,直接執(zhí)行就可以調(diào)用新的類庫。不過就是在此情況下,會(huì)產(chǎn)生潛在的bug。這是由于靜態(tài)常量在編譯的時(shí)候,是用它的值去替換常量,因此在調(diào)用端的程序也是這樣進(jìn)行替換的。
C#靜態(tài)變量的使用實(shí)例:
在類庫中定義了一個(gè)靜態(tài)常量,如下:
- public const int MAX_VALUE = 10;
那么對(duì)于程序中調(diào)用此靜態(tài)常量這段代碼,在編譯后產(chǎn)生的中間語言代碼中,是用10來進(jìn)行替換,即使用靜態(tài)常量的地方,改為10了。
那么當(dāng)類庫的靜態(tài)變量發(fā)生變化后,例如:
- public const int MAX_VALUE = 15;
C#靜態(tài)變量的使用的總結(jié):
那么對(duì)于調(diào)用端程序是可以在沒有重新編譯的情況下進(jìn)行運(yùn)行,不過此時(shí)程序的中間語言代碼對(duì)應(yīng)于C#靜態(tài)變量的值是10,而不是新類庫中的15。因此這樣產(chǎn)生的不一致,程序會(huì)引發(fā)潛在的bug。解決此類問題的方法,就是調(diào)用端程序在更新類庫之后重新編譯一下,即生成新的中間語言代碼。
C#靜態(tài)變量的一些使用的心得就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#靜態(tài)變量的使用有所幫助。
【編輯推薦】