2013-12-19 102 views
5

我正在爲我的班級實施ISerializable界面。我可以/我應該序列化一個C#類中的常量變量嗎?

我在班級就像一個常變量:

public const decimal Cost = 3.2M 

當我實現GetObjectData方法,可我/我應該串行這個變量?

+2

這樣做的意義何在? – Rotem

+12

一個常量變量是一個矛盾。 – BoltClock

+1

BoltClock是正確的;這首先不是*變量*。變量是所謂的,因爲它們有所不同。 –

回答

18

當我實現GetObjectData方法,我可以/我應該串行這個變量?

絕對不是。

即使你沒有寫出來,它不像你可以改變常量的值,當你再次讀回它。

更一般地,你不應該在所有的序列化靜態字段(和const意味着static)。任何static都不是實例的狀態的一部分,它是您要嘗試序列化的實例中的數據。

4

它會改變嗎?大概沒有(不行)。那麼你爲什麼會打擾序列化呢?如果你願意的話,你甚至不能反序列化它,但即使你可以,它也總是有相同的價值。

3

你爲什麼要這樣做?除非您更改代碼,否則該值永遠不會更改。

個人而言,我只序列化公共屬性,所以不包含常量。

3

序列化和反序列化值只有在某些對象實例之間會發生變化時纔有用。因此,序列化const值沒有意義,因爲它不會更改。如果你確實希望未來的價值發生變化,那麼它可能不應該是const

相關問題