v1>v2 返回1
v1<v2 返回-1
否则返回 0
private int compareVersion(string version1, string version2)
{
// 将传入的版本号由字符串格式以【.】为分隔符转换为数字数组格式
var numberArr1 = version1.Split('.').ToList();
var numberArr2 = version2.Split('.').ToList();
// 计算两个数字数组的长度差
var diff = numberArr1.Count - numberArr2.Count;
// 将两个数字数组的长度对齐(较短的数组进行末位补0操作)
if (diff < 0)
{
// 注意下面的i的赋值,千万不要直接将diff赋值给i,因为由上面的计算,diff可能是负数
for (int i = Math.Abs(diff); i > 0; i--)
{
numberArr1.Add("0");
}
}
else
{
for (int i = Math.Abs(diff); i > 0; i--)
{
numberArr2.Add("0");
}
}
// 将两个数字数组进行逐位比较(以修订号为单位),不必等所有修订号都比较一遍,
// 一旦某位修订号可以比较出大小,可以立即返回结果,注意修改isEqual的值
for (int i = 0, length = numberArr1.Count; i < length; i++)
{
int num1= Convert.ToInt32( numberArr1[i]);
int num2 = Convert.ToInt32(numberArr2[i]);
if (num1 > num2)
{
return 1;
}
else if (num1< num2)
{
return -1;
}
}
// 如果经过上面的比较发现各位修订号都一样,那就说明两个版本是一样的,返回0
return 0;
}