我有一個具有枚舉屬性的類。要使用compact屬性語法,我必須用類型的值初始化它,例如。獲取F#中枚舉類型的第一個值
type Color =
| Blue= 0
| Green= 1
type MyClass() =
member val Col = Color.Blue with get, set // <-- the problem
不過,我不喜歡在那裏硬編碼Blue
,並希望將其設置爲枚舉的第一個項目。
我已經能與此做:
member val Color = enum<Color>(unbox (Enum.GetValues(typeof<Color>).GetValue(0))) ...
不用說了,我希望有一個更好的辦法要麼得到一個枚舉的第一個值,或初始化屬性!
是'構件VAL列= Unchecked.defaultOf以get,set'不希望的一些原因? –
ildjarn
@ildjarn看起來不錯,但它會產生奇怪的行爲!成員'Col'的推斷類型是'Color'(這是我想要的),但是當我評估MyClass().Col時,它產生'val it:Color = 0'(應該是'Blue')。 –
這聽起來像一個FSI問題 - 代碼是否在運行時編譯和正確工作? – ildjarn