我有一个变量(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
复制相似问题