投稿者 ひでと  (社会人) 投稿日時 2010/6/10 09:54:11
お世話になります。Doubleという構造体がありますが、これを利用して制約付きのmyDoubleという構造体を作ってみようといたしました。
Public Module Module1
    Public Structure myDouble
        Private pValue As Double
        Public Property Value() As Double
            Get
                Return pValue
            End Get
            Set(ByVal value As Double)
                pValue = Math.Abs(value)
            End Set
        End Property
    End Structure
End Module

Public Class X
    Private newValue As myDouble
    Public Property Value() As myDouble
        Get
            Return newValue
        End Get
        Set(ByVal value As myDouble)
            newValue = value
        End Set
    End Property
End Class

テストとしてこのようにしてみると
Public Class Test
    Public Sub LargeOrSmall()
        Dim a As myDouble = 500  '1 =500で Integerの値を 変換できません
        Dim b As myDouble = -600  '2   =-600で Integerの値を 変換できません
        If a < b Then Debug.Print("TestOK")  ' <で 演算子・・・定義されていません
    End Sub
    Public Sub ClassTest()
        Dim newX As X
        newX.Value = -100 '-100で  Integerの値を 変換できません
    End Sub
End Class

とエラーが出てきます。Inheritsとか使えないみたいなのですが、もしクラスで同様の使い方がありましたら教えてください。
Value プロパティを規定プロパティ?にして Doubleと同じような使い方はできないかと考えています。