Console.WriteLine(C.Value)
Console.WriteLine("Done")
Private m_Value As String
Public Property Value As Object
If Double.TryParse(m_Value, m_value1) Then
m_Value = value.ToString()
Public Sub New(Value As String)
Public Shared Widening Operator CType(ByVal value As String) As MathVariant
Return New MathVariant(value)
Public Shared Widening Operator CType(ByVal value As Decimal) As MathVariant
Return New MathVariant(value.ToString())
Public Shared Widening Operator CType(ByVal value As Double) As MathVariant
Return New MathVariant(value)
Public Shared Widening Operator CType(ByVal value As Integer) As MathVariant
Return New MathVariant(value.ToString())
Public Shared Narrowing Operator CType(ByVal value As MathVariant) As Double
Public Shared Narrowing Operator CType(ByVal value As MathVariant) As Integer
Return Convert.ToInt32(value.ToDouble())
Public Shared Narrowing Operator CType(ByVal value As MathVariant) As String
Return value.Value.ToString()
Public Function ToDouble() As Double
If Double.TryParse(Me.Value.ToString(), test) Then
Public Shared Operator +(value1 As MathVariant, value2 As MathVariant) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2.Value Is Double Then
Return value1.ToDouble() + value2.ToDouble()
ElseIf TypeOf value1.Value Is Double Then
Return value1.ToDouble() + 0.0
ElseIf TypeOf value2.Value Is Double Then
Return 0.0 + value2.ToDouble()
Public Shared Operator +(value1 As MathVariant, value2 As Object) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2 Is Double Then
Return value1.ToDouble() + value2
ElseIf TypeOf value2 Is Double Then
Public Shared Operator +(value1 As MathVariant, value2 As Double) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() + value2
Public Shared Operator +(value1 As MathVariant, value2 As Integer) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() + Convert.ToDouble(value2)
Return 0.0 + Convert.ToDouble(value2)
Public Shared Operator -(value1 As MathVariant, value2 As MathVariant) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2.Value Is Double Then
Return value1.ToDouble() - value2.ToDouble()
ElseIf TypeOf value1.Value Is Double Then
Return value1.ToDouble() - 0.0
ElseIf TypeOf value2.Value Is Double Then
Return 0.0 - value2.ToDouble()
Public Shared Operator -(value1 As MathVariant, value2 As Object) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2 Is Double Then
Return value1.ToDouble() - value2
ElseIf TypeOf value2 Is Double Then
Public Shared Operator -(value1 As MathVariant, value2 As Double) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() - value2
Public Shared Operator -(value1 As MathVariant, value2 As Integer) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() - Convert.ToDouble(value2)
Return 0.0 - Convert.ToDouble(value2)
Public Shared Operator /(value1 As MathVariant, value2 As MathVariant) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2.Value Is Double Then
Return value1.ToDouble() / value2.ToDouble()
ElseIf TypeOf value1.Value Is Double Then
Return value1.ToDouble() / 1.0
ElseIf TypeOf value2.Value Is Double Then
Return 1.0 / value2.ToDouble()
Public Shared Operator /(value1 As MathVariant, value2 As Object) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2 Is Double Then
Return value1.ToDouble() / value2
ElseIf TypeOf value2 Is Double Then
Public Shared Operator /(value1 As MathVariant, value2 As Double) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() + value2
Public Shared Operator /(value1 As MathVariant, value2 As Integer) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() + Convert.ToDouble(value2)
Return 0.0 + Convert.ToDouble(value2)
Public Shared Operator *(value1 As MathVariant, value2 As MathVariant) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2.Value Is Double Then
Return value1.ToDouble() * value2.ToDouble()
ElseIf TypeOf value1.Value Is Double Then
Return value1.ToDouble() * 1.0
ElseIf TypeOf value2.Value Is Double Then
Return 1.0 * value2.ToDouble()
Public Shared Operator *(value1 As MathVariant, value2 As Object) As MathVariant
If TypeOf value1.Value Is Double And TypeOf value2 Is Double Then
Return value1.ToDouble() * value2
ElseIf TypeOf value2 Is Double Then
Public Shared Operator *(value1 As MathVariant, value2 As Double) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() + value2
Public Shared Operator *(value1 As MathVariant, value2 As Integer) As MathVariant
If TypeOf value1.Value Is Double Then
Return value1.ToDouble() * Convert.ToDouble(value2)
Return 1.0 * Convert.ToDouble(value2)
Public Shared Operator <(value1 As MathVariant, value2 As MathVariant)
If TypeOf value1.Value Is Double And TypeOf value2.Value Is Double Then
Return value1.Value < value2.Value
ElseIf TypeOf value1.Value Is Double Then
ElseIf TypeOf value2.Value Is Double Then
Public Shared Operator <(value1 As MathVariant, value2 As Double)
If TypeOf value1.Value Is Double Then
Return value1.Value < value2
Public Shared Operator <(value1 As MathVariant, value2 As Integer)
If TypeOf value1.Value Is Double Then
Return value1.Value < Convert.ToDouble(value2)
Return 0.0 < Convert.ToDouble(value2)
Public Shared Operator >(value1 As MathVariant, value2 As MathVariant)
If TypeOf value1.Value Is Double And TypeOf value2.Value Is Double Then
Return value1.Value > value2.Value
ElseIf TypeOf value1.Value Is Double Then
ElseIf TypeOf value2.Value Is Double Then
Public Shared Operator >(value1 As MathVariant, value2 As Double)
If TypeOf value1.Value Is Double Then
Return value1.Value > value2
Public Shared Operator >(value1 As MathVariant, value2 As Integer)
If TypeOf value1.Value Is Double Then
Return value1.Value > Convert.ToDouble(value2)
Return 0.0 > Convert.ToDouble(value2)
Public Shared Operator =(value1 As MathVariant, value2 As Object)
If TypeOf (value2) Is Double Then
Return Convert.ToDouble(value2).Equals(value1.ToDouble())
ElseIf TypeOf (value2) Is String Then
Return Convert.ToString(value2).Equals(value1.ToString())
Public Shared Operator <>(value1 As MathVariant, value2 As Object)
Dim m_Type As Type = value2.GetType()
If TypeOf (value2) Is Double Then
Return Convert.ToDouble(value2).Equals(value1.ToDouble())
ElseIf TypeOf (value2) Is String Then
Return Convert.ToString(value2).Equals(value1.ToString())