Mega Code Archive

 
Categories / VB.Net / Data Types
 

Temperature class stores the value as Double and delegates most of the functionality to the Double implementation

Imports System.Globalization Public Class Temperature     Implements IComparable, IFormattable     Public Overloads Function CompareTo(ByVal obj As Object) As Integer _         Implements IComparable.CompareTo         If TypeOf obj Is Temperature Then             Dim temp As Temperature = CType(obj, Temperature)             Return m_value.CompareTo(temp.m_value)         End If         Throw New ArgumentException("object is not a Temperature")     End Function     Public Overloads Function ToString(ByVal format As String, ByVal provider As IFormatProvider) As String _         Implements IFormattable.ToString         If Not (format Is Nothing) Then             If format.Equals("F") Then                 Return [String].Format("{0}'F", Me.Value.ToString())             End If             If format.Equals("C") Then                 Return [String].Format("{0}'C", Me.Celsius.ToString())             End If         End If         Return m_value.ToString(format, provider)     End Function     Public Shared Function Parse(ByVal s As String, ByVal styles As NumberStyles, ByVal provider As IFormatProvider) As Temperature         Dim temp As New Temperature()         If s.TrimEnd(Nothing).EndsWith("'F") Then             temp.Value = Double.Parse(s.Remove(s.LastIndexOf("'"c), 2), styles, provider)         Else             If s.TrimEnd(Nothing).EndsWith("'C") Then                 temp.Celsius = Double.Parse(s.Remove(s.LastIndexOf("'"c), 2), styles, provider)             Else                 temp.Value = Double.Parse(s, styles, provider)             End If         End If         Return temp     End Function     Protected m_value As Double     Public Property Value() As Double         Get             Return m_value         End Get         Set(ByVal Value As Double)             m_value = Value         End Set     End Property     Public Property Celsius() As Double         Get             Return (m_value - 32) / 1.8         End Get         Set(ByVal Value As Double)             m_value = Value * 1.8 + 32         End Set     End Property End Class Class Sample    Public Shared Sub Main()    End Sub 'Main End Class