2 つのバージョン番号に対して CompareTo を実行し、バージョンが >= versionA の場合に X を発生させるために、Version オブジェクトを使用しています。
私の問題は、以下のコードで、CompareTo が VersionB が VersionA より大きいことを宣言していることです。
Version versionA = new Version("2.12");
Version versionB = new Version("2.121");
switch (versionB.CompareTo(versionA))
{
case 0: // Equal To
_doThis = true;
break;
case 1: // Greater Than
_doThat = true;
break;
case 2: // Less Than
_doNothing = true;
break;
}
この比較はケース 2 に当てはまります。ここに示すように、メソッドに渡されるファームウェア バージョンを一致させるために正規表現を使用しています。
^\S+\s(?(\d+.*)+)\s*.*$
「Version 2.12」の行に沿って何かを受け入れます。この正規表現は「2.12」だけを残し、Version オブジェクトに初期化されます。
バージョン 2.12 が 2.121 よりも新しいバージョンであると .NET が私に言っている理由について、誰か考えがありますか?
編集:
コードを次のように変更しました。
Version versionA = new Version("2.12");
Version versionB = new Version("2.121");
if (versionB.CompareTo(versionA) >= 0)
{
_doThis = true;
}
そして、それは正しく動作します。ただし、「2.11」と「2.121」を比較すると、1 も返されます。この比較は -1 を返すべきではありませんか?