.Net の Version クラスは、予想どおり CompareTo インターフェイスを実装していません。4 つの数値を比較するのではなく、英数字で比較を処理しているようです。たぶんバグではなく、「機能」です。
以下で期待するように、比較(および標準の <、=、および > 演算子)が機能しない理由を誰でも明らかにできますか?
Dim MainVersion As New Version("1.1.3251.4029")
Dim Ver_Low As New Version("1.1")
Dim Ver_Same As New Version("1.1.3251.4029")
Dim Ver_High As New Version("1.1.5.0")
' CompareTo here yields 1 which is expected as MainVersion is greater than Ver_Low.
MessageBox.Show(String.Format("{0}.CompareTo({1}) = {2}", MainVersion.ToString(), Ver_Low.ToString(), MainVersion.CompareTo(Ver_Low).ToString()))
' CompareTo here yields 0 which is expected as MainVersion and Ver_Same are the same.
MessageBox.Show(String.Format("{0}.CompareTo({1}) = {2}", MainVersion.ToString(), Ver_Same.ToString(), MainVersion.CompareTo(Ver_Same).ToString()))
' **** Issue here **** CompareTo here yields 1 which is NOT expected as MainVersion is less than Ver_High.
MessageBox.Show(String.Format("{0}.CompareTo({1}) = {2}", MainVersion.ToString(), Ver_High.ToString(), MainVersion.CompareTo(Ver_High).ToString()))
私は人々がこれに対して独自の手動の回避策を行ったことを知っています.
前もって感謝します
ライアン
更新:私は微妙にばかげたことをしていて、それらをIPアドレスと同じように扱っていました. 例えば; 1.1.3023.5364 は 1.1.5 より大きいが、1.1.3023.5364 は 1.1.5000 より小さい。