現在はConvert.ToDecimal(object) を Try Catch End Try で挟んでいます。 Object型をToStringメソッドでString型にしてから、Decimal.Parse等で変換するのでしょうか?
Public Interface IInterface() Property Value() As Object End Interface
Option Strict On Public Class ClassDecimal Implements IInterface
Private myValue As Decimal = 0
Public Property Value() As Object Implements IInterface.Value Get Return myValue End Get Set(value As Object) ' Decimalに変換できない場合はゼロとする If value Is Nothing Then myValue = 0 Else Try myValue = Convert.ToDecimal(value) Catch myValue = 0 End Try ' もしかして以下のほうがスマート? ' Dim result As Decimal = 0 ' If Decimal.TryParse(value.ToString, result) Then ' myValue = result ' Else ' myValue = 0 ' End If End If End Set End Property End Class
>>Public Interface IInterface() > この括弧は誤記でしょうか。それとも Of が省略されているとか? > > Public Class ClassDecimal > Implements IInterface(Of Decimal) > Public Property Value As Decimal Implements IInterface(Of Decimal).Value すいません。単純なタイプミスです。
> 'VB2015 以降 > Set(value As Object) > Decimal.TryParse(value?.ToString(), myValue) > End Set > > 'VB2008〜VB2013 > Set(value As Object) > Decimal.TryParse(If(value, "0").ToString(), myValue) > End Set これはとてもシンプルでとっても気持ちいいですね。