我有一个变量(ApplicationVersionInformationArray(0)),它保存以下值:"1.0.0.1“
确定此值是否大于1.0的最佳方法是什么?
下面是我的当前代码(ApplicationVersionInformationNumber类型为Double):
If Double.TryParse(ApplicationVersionInformationArray(0), ApplicationVersionInformationNumber) = False Then
Return False
Else
If ApplicationVersionInformationNumber < 1 Then Return False
End If更新
我发现有一个版本类可以很容易地完成这个转换。
发布于 2013-07-06 06:37:30
这里是我为比较版本而写了很长时间的类的精简版本。
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")发布于 2013-07-06 14:26:14
我在另一个论坛上找到了这个代码
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如果你做了一些小的改变,它应该符合你的目的。版本类中包含版本中所有字段的are Properties。
https://stackoverflow.com/questions/17499813
复制相似问题