由const引發的版本控制問題

2021-04-13 23:52:41 字數 1053 閱讀 4967

最近,對專案的庫做了一次公升級,程式一切正常。但是,有次開啟

oracle

,發現資料不對,表中還是沒有公升級之前的老資料。於是,對所有庫做了一次徹底檢查,硬是沒找出

bug。

心裡想,先放著吧,說不定就來靈感了呢!

幾天後,我偶然把專案全部

compiler

一次,資料竟然正常了。怪,怪了。難道是常量的問題嗎?因為公升級的後的庫,只對幾個地方做了修改,其中乙個就是改變了常量的值。

先做個小

deom

看看吧!

定義庫using system; 

using system.collections.generic; 

using system.text; 

namespace classlibrary1  } 

} class1

中定義了乙個常量i=」

wmj」

,還有乙個全域性物件變數m=」

gmj」

,僅此而已。

開啟ilda**.exe 

先看看m.field private string m 

可以看到

m被定義成私有的,字串型別的物件字段。

再看看i 

.field private static literal string i = "aaa" 

可以看到

i被定義成私有的,字串型別的類字段,而且初始值已經儲存到

il中,問題就出在這裡了。

如果修改i=」

ccc」

,我發現如果不

compiler

引用他的程式,程式仍然維持

i=」aaa」

。下面是修改前後的效果

所以在資料需要跨程式集的時候,盡量避免定義為

const

型別,而且最好全部

compiler

一次。

由Typedef引發的問題

由typedef 引發的問題 自 用來宣告乙個別名,typedef 後面的語法,是乙個宣告。本來筆者以為這裡不會產生什麼誤解的,但結果卻出乎意料,產生誤解的人不在少數。罪魁禍首又是那些害人的教材。在這些教材中介紹 typedef 的時候通常會寫出如下形式 typedef int para 這種形式跟...

由object不能比較引發的問題

這是乙個小問題,請看下面的 using system using system.collections.generic using system.linq using system.text namespace sample 我們假設有兩個變數,其實它們是int,但程式用object來接收它們。然後...

由 引發的思考

前陣子在乙個移動專案中,通過 的方式 繫結click 事件來提交乙個表單,由於表單資訊比較敏感,於是採用的post 同步提交的方式,原本到也沒有什麼。後來萬惡的pm說 你這個按鈕呀,要固定在底部比較好 於是乎就通過 position fixed 固定到底部了。那麼,問題來了 在ios 下,虛擬鍵盤是...