Imports System
Public Class Test
Public Shared Sub Main()
Dim d As MyDecimal = 1D
Dim s As String = "hoge "
s = s & d
System.Console.WriteLine(s)
End Sub
End Class
Public Structure MyDecimal
'Public Property Value As Decimal
Public Value As Decimal
Public Sub New(val As Decimal)
Me.Value = val
End Sub
Public Shared Widening Operator CType(d As MyDecimal) As Decimal
Return d.Value
End Operator
Public Shared Widening Operator CType(d As Decimal) As MyDecimal
Return New MyDecimal(d)
End Operator
Public Shared Widening Operator CType(d As MyDecimal) As String
Return d.Value.ToString
End Operator
Public Overrides Function ToString() As String
Return Value.ToString("0.00##")
End Function
Public Shared Operator &(d As MyDecimal, s As String) As String
Return d.ToString & s
End Operator
Public Shared Operator &(s As String, d As MyDecimal) As String
Return s & d.ToString
End Operator
End Structure
SW1wb3J0cyBTeXN0ZW0KClB1YmxpYyBDbGFzcyBUZXN0CiAgICBQdWJsaWMgU2hhcmVkIFN1YiBNYWluKCkKICAgIAogICAgICAgIERpbSBkIEFzIE15RGVjaW1hbCA9IDFECiAgICAgICAgRGltIHMgQXMgU3RyaW5nID0gImhvZ2UgIgogICAgICAgIHMgPSBzICYgZAoKICAgICAgICBTeXN0ZW0uQ29uc29sZS5Xcml0ZUxpbmUocykgCgogICAgRW5kIFN1YgoKRW5kIENsYXNzCgpQdWJsaWMgU3RydWN0dXJlIE15RGVjaW1hbAoKICAgICdQdWJsaWMgUHJvcGVydHkgVmFsdWUgQXMgRGVjaW1hbAogICAgUHVibGljICBWYWx1ZSBBcyBEZWNpbWFsCgogICAgUHVibGljIFN1YiBOZXcodmFsIEFzIERlY2ltYWwpCiAgICAgICAgTWUuVmFsdWUgPSB2YWwKICAgIEVuZCBTdWIKCiAgICBQdWJsaWMgU2hhcmVkIFdpZGVuaW5nIE9wZXJhdG9yIENUeXBlKGQgQXMgTXlEZWNpbWFsKSBBcyBEZWNpbWFsCiAgICAgICAgUmV0dXJuIGQuVmFsdWUKICAgIEVuZCBPcGVyYXRvcgogICAgUHVibGljIFNoYXJlZCBXaWRlbmluZyBPcGVyYXRvciBDVHlwZShkIEFzIERlY2ltYWwpIEFzIE15RGVjaW1hbAogICAgICAgIFJldHVybiBOZXcgTXlEZWNpbWFsKGQpCiAgICBFbmQgT3BlcmF0b3IKCiAgICBQdWJsaWMgU2hhcmVkIFdpZGVuaW5nIE9wZXJhdG9yIENUeXBlKGQgQXMgTXlEZWNpbWFsKSBBcyBTdHJpbmcKICAgICAgICBSZXR1cm4gZC5WYWx1ZS5Ub1N0cmluZwogICAgRW5kIE9wZXJhdG9yCgogICAgUHVibGljIE92ZXJyaWRlcyBGdW5jdGlvbiBUb1N0cmluZygpIEFzIFN0cmluZwogICAgICAgIFJldHVybiBWYWx1ZS5Ub1N0cmluZygiMC4wMCMjIikKICAgIEVuZCBGdW5jdGlvbgoKICAgIFB1YmxpYyBTaGFyZWQgT3BlcmF0b3IgJihkIEFzIE15RGVjaW1hbCwgcyBBcyBTdHJpbmcpIEFzIFN0cmluZwogICAgICAgIFJldHVybiBkLlRvU3RyaW5nICYgcwogICAgRW5kIE9wZXJhdG9yCiAgICBQdWJsaWMgU2hhcmVkIE9wZXJhdG9yICYocyBBcyBTdHJpbmcsIGQgQXMgTXlEZWNpbWFsKSBBcyBTdHJpbmcKICAgICAgICBSZXR1cm4gcyAmIGQuVG9TdHJpbmcKICAgIEVuZCBPcGVyYXRvcgoKRW5kIFN0cnVjdHVyZQo=