2013-07-06 3 views
2

У меня есть переменная (ApplicationVersionInformationArray (0)), которая имеет следующее значение: «1.0.0.1»TryParse Двойного

Каков наилучший способ определить, если это значение больше, чем 1,0

Здесь мой текущий код (ApplicationVersionInformationNumber имеет тип Double):

If Double.TryParse(ApplicationVersionInformationArray(0), ApplicationVersionInformationNumber) = False Then 
     Return False 
    Else 
     If ApplicationVersionInformationNumber < 1 Then Return False 
    End If 

UPDATE

I обнаружили, что существует класс версий, который легко выполняет это преобразование.

+0

Преобразование «1.0.0.1» в 'Double' не способ сделать это (когда я разглагольствовать код в VS, я получил 0.0 для преобразования). – Tim

+0

Также, какую часть номера версии вы пытаетесь сравнить? Все это? Номер основной версии (1), младший номер версии (0), ревизия (0), сборка (1) или некоторая комбинация? – Tim

ответ

1

Вот урезанная версия класса, которую я написал долгое время для сравнения версии.

Public Class Version 
    Implements IEquatable(Of Version) 

    Private _mmajorVersion As Integer = 0 
    Private _mminorVersion As Integer = 0 
    Private _mrivision As Integer = 0 
    Private _mbuild As Integer = 0 

    Sub New() 
     _mmajorVersion = 0 
     _mminorVersion = 0 
     _mrivision = 0 
     _mbuild = 0 
    End Sub 
    Sub New(ByVal VersionObj As Object) 
     If VersionObj Is DBNull.Value Then 
      _mmajorVersion = 0 
      _mminorVersion = 0 
      _mrivision = 0 
      _mbuild = 0 
     Else 
      ParseVersionString(VersionObj.ToString) 
     End If 
    End Sub 

    Public Sub New(ByVal VersionString As String) 
     ParseVersionString(VersionString) 
    End Sub 

    Public Property MajorVersion As Integer 
     Get 
      Return _mmajorVersion 
     End Get 
     Set(ByVal value As Integer) 
      _mmajorVersion = value 
     End Set 
    End Property 
    Public Property MinorVersion As Integer 
     Get 
      Return _mminorVersion 
     End Get 
     Set(ByVal value As Integer) 
      _mminorVersion = value 
     End Set 
    End Property 
    Public Property Revision As Integer 
     Get 
      Return _mrivision 
     End Get 
     Set(ByVal value As Integer) 
      _mrivision = value 
     End Set 
    End Property 

    Private Sub ParseVersionString(ByVal Version_String As String) 
     Dim p() As String = Version_String.Split(New Char() {"."}, 4) 
     If IsNumeric(p(0)) Then 
      _mmajorVersion = CInt(p(0)) 
     End If 
     If p.Length > 1 Then 
      If IsNumeric(p(1)) Then 
       _mminorVersion = CInt(p(1)) 
      End If 
     End If 
     If p.Length > 2 Then 
      If IsNumeric(p(2)) Then 
       _mrivision = CInt(p(2)) 
      End If 
     End If 
     If p.Length > 3 Then 
      If IsNumeric(p(3)) Then 
       _mbuild = CInt(p(3)) 
      End If 
     End If 
    End Sub 

    Public Shared Operator <(ByVal Version1 As Version, ByVal Version2 As Version) As Boolean 
     If Version1 = Version2 Then Return False 
     If Version1._mmajorVersion < Version2._mmajorVersion Then Return True 
     If Version1._mmajorVersion > Version2._mmajorVersion Then Return False 
     If Version1._mminorVersion < Version2._mminorVersion Then Return True 
     If Version1._mminorVersion > Version2._mminorVersion Then Return False 
     If Version1._mrivision < Version2._mrivision Then Return True 
     If Version1._mrivision > Version2._mrivision Then Return False 
     If Version1._mbuild < Version2._mbuild Then Return True 
     If Version1._mbuild > Version2._mbuild Then Return False 
     Return False 
    End Operator 
    Public Shared Operator >(ByVal Version1 As Version, ByVal Version2 As Version) As Boolean 
     Return Not (Version1 < Version2 Or Version1 = Version2) 
    End Operator 

    Public Shared Operator <=(ByVal Version1 As Version, ByVal Version2 As Version) As Boolean 
     If Version1 > Version2 Then Return False 
     Return True 
    End Operator 
    Public Shared Operator >=(ByVal Version1 As Version, ByVal Version2 As Version) As Boolean 
     If Version1 < Version2 Then Return False 
     Return True 
    End Operator 

    Public Shared Operator =(ByVal Version1 As Version, ByVal Version2 As Version) As Boolean 
     If Version1._mmajorVersion = Version2._mmajorVersion And _ 
      Version1._mminorVersion = Version2._mminorVersion And _ 
      Version1._mrivision = Version2._mrivision And _ 
      Version1._mbuild = Version2._mbuild Then 
      Return True 
     End If 
     Return False 
    End Operator 
    Public Shared Operator <>(ByVal Version1 As Version, ByVal Version2 As Version) As Boolean 
     Return Not Version1 = Version2 
    End Operator 
    Public Overrides Function Equals(ByVal obj As Object) As Boolean 
     If obj Is Nothing Then Return False 
     If obj.GetType.Name <> Me.GetType.Name Then Return False 
     Dim v As Version = DirectCast(obj, Version) 
     Return Me = v 
    End Function 
    Public Overloads Function Equals(ByVal other As Version) As Boolean Implements System.IEquatable(Of Version).Equals 
     Return Me = other 
    End Function 

    Public Overrides Function ToString() As String 
     Return String.Format("{0}.{1}.{2}.{3}", _mmajorVersion.ToString, _mminorVersion.ToString, _mrivision.ToString, _mbuild.ToString) 
    End Function 

    Public Overrides Function GetHashCode() As Integer 
     Return Me.ToString.GetHashCode() 
    End Function 
End Class 

Этот класс можно назвать классом.

Return New Version(ApplicationVersionInformationArray(0)) > New Version("1.0.0.0") 
0

Я нашел этот код на другом форуме

Dim versionText As String = "1.0.0.1" 
    Dim currentVersion As Version 

    If Version.TryParse(versionText, currentVersion) Then 
     Dim minVersion As New Version(1, 0) 
     If currentVersion > minVersion Then 
      MessageBox.Show("Current version is greater than minimum version.") 
     Else 
      MessageBox.Show("Current version is NOT greater than minimum version.") 
     End If 
    Else 
     MessageBox.Show("Current version is not valid.") 
    End If 

Если внести некоторые незначительные изменения, которые должны служить вашим целям. Это свойства в классе версии, которые имеют все поля в версии.

Version class