Data Types VB.Net

Public Class Temperature
   Private m_Temp As Decimal
   Public Sub New(temperature As Decimal)
      Me.m_Temp = temperature
   End Sub
   Public ReadOnly Property Celsius() As Decimal
      Get
         Return Me.m_Temp
      End Get   
   End Property
   Public ReadOnly Property Kelvin() As Decimal
      Get
         Return Me.m_Temp + 273.15d   
      End Get
   End Property
   Public ReadOnly Property Fahrenheit() As Decimal
      Get
         Return Math.Round(CDec(Me.m_Temp * 9 / 5 + 32), 2)
      End Get      
   End Property
   Public Overrides Function ToString() As String
      Return Me.ToString("C")
   End Function
   Public Overloads Function ToString(format As String) As String  
      If String.IsNullOrEmpty(format) Then format = "C"
      format = format.Trim().ToUpperInvariant()      
      Select Case format
         Case "F"
            Return Me.Fahrenheit.ToString("N2") & " F"
         Case "K"
            Return Me.Kelvin.ToString("N2") & " K"
         Case "C"
            Return Me.Celsius.ToString("N2") & " C"
         Case Else
            Throw New FormatException(String.Format("The '{0}' format string is not supported.", format))
      End Select      
   End Function
End Class
Public Module Example
   Public Sub Main()
      Dim temp1 As New Temperature(0d)
      Console.WriteLine(temp1.ToString())
      Console.WriteLine(temp1.ToString("C"))
      Console.WriteLine(temp1.ToString("F"))
      Console.WriteLine(temp1.ToString("K"))
      Dim temp2 As New Temperature(-40d)
      Console.WriteLine(temp2.ToString())
      Console.WriteLine(temp2.ToString("C"))
      Console.WriteLine(temp2.ToString("F"))
      Console.WriteLine(temp2.ToString("K"))
      Dim temp3 As New Temperature(16d)
      Console.WriteLine(temp3.ToString())
      Console.WriteLine(temp3.ToString("C"))
      Console.WriteLine(temp3.ToString("F"))
      Console.WriteLine(temp3.ToString("K"))
      Console.WriteLine(String.Format("The temperature is now {0:F}.", temp3))
   End Sub
End Module