剛剛花了幾個小時試圖找出爲什麼我的Xml序列化代碼不工作。考慮以下幾點:Option Strict和DefaultValueAttribute
<DefaultValueAttribute(False)>
Public Property UserName() As String
爲什麼這是允許的,無論選項嚴格是否在(或不)?
剛剛花了幾個小時試圖找出爲什麼我的Xml序列化代碼不工作。考慮以下幾點:Option Strict和DefaultValueAttribute
<DefaultValueAttribute(False)>
Public Property UserName() As String
爲什麼這是允許的,無論選項嚴格是否在(或不)?
答案是,VS不會鍵入檢查VB.NET的默認值,而不管OptionStrict與否。
<DefaultValueAttribute(False)>
是有效的,因爲屬性定義實際上是構造函數而不是類型定義,因此它的類型是DefaultValueAttribute
而不是返回類型boolean
。此外DefaultValueAttribute
的.Value
屬性的類型爲Object
,因此它的類型也無法比較,因爲DefaultValueAttribute
的存在違反Option Strict On
,因此在DefaultValue
屬性的範圍內忽略Option Strict
。
非常簡單。 DefaultValueAttribute
有一個接受布爾值的重載,所以它可以使用或不使用Option Strict
。
檢查此頁以獲取更多信息DefaultValueAttribute Class。