2010-11-24 8 views
0

私のXmlシリアル化コードが機能しなかった理由を調べようと、過去数時間を費やしています。以下を考慮してください:オプションStrictとDefaultValueAttribute

<DefaultValueAttribute(False)> 
Public Property UserName() As String 

オプション厳密に設定されているかどうかにかかわらず、これはなぜ許可されますか?

答えて

0

答えは、OptionStrictに関係なく、VSはVB.NETのデフォルト値をチェックしません。

<DefaultValueAttribute(False)>は、実際には属性定義が型定義ではなく、DefaultValueAttributeで、戻り値の型がbooleanであるため、有効です。さらに、DefaultValueAttribute.ValueプロパティはObjectタイプであるため、DefaultValueAttributeの存在がOption Strict Onに違反するため、DefaultValue属性の範囲では無視されるため、Option Strictが無視されます。

1

かなり単純です。 DefaultValueAttributeにはブール値を受け入れるオーバーロードがあるため、Option Strictをオンまたはオフにしても動作します。

詳細については、このページを確認してくださいDefaultValueAttribute Class

関連する問題