我已尝试使用两种类型
对两个整数值进行比较类型1:
int val1 = 1;
int val2 = 2;
var returnValue = val1.CompareTo(val2);//-1 for First int is smaller.
varreturnValue = val2.CompareTo(val1);// 1 for First int is larger
varreturnValue = val1.CompareTo(val1);//0 for Ints are equal.
If(varreturnValue ==1)
{
//Success
}
else
{
//Failure
}
类型2:
int val1 = 1;
int val2 = 2;
if (val1 < val2)
{
//return -1 //Failure
}
else if (val2 < val1)
{
//return 2 //Success
}
else
{
// return 0 // Same
}
这些方法有什么区别?
哪一个(类型)更适合标准编码..?
各种类型的表现有何不同?
答案 0 :(得分:2)
当我看一下int CompareTo()
方法的内部(使用ReSharper)时,我看到了这一点:
public int CompareTo(int value)
{
if (this < value)
return -1;
return this > value ? 1 : 0;
}
因此,无论如何,无论如何,似乎CompareTo()
函数正在执行您的第二个示例。
如果我们删除三元运算符,它看起来与您的示例相同:
public int CompareTo(int value)
{
if (this < value)
return -1;
if (this > value)
return -1;
return 0;
}
答案 1 :(得分:1)
在我看来,CompareTo
方法很好,以防你需要 分开 检查相等性的逻辑和另一个使用结果的逻辑比较。在您的示例中,当您执行以下代码时:
int val1 = 1;
int val2 = 2;
if (val1 < val2)
{
//return -1 //Failure
}
else if (val2 < val1)
{
//return 2 //Success
}
else
{
// return 0 // Same
}
您不能 将 返回 比较结果 的其他功能。这是从msdn:
中提取的代码enum Comparison {
LessThan=-1, Equal=0, GreaterThan=1};
public class ValueComparison
{
public static void Main()
{
int mainValue = 16325;
int zeroValue = 0;
int negativeValue = -1934;
int positiveValue = 903624;
int sameValue = 16325;
Console.WriteLine("Comparing {0} and {1}: {2} ({3}).",
mainValue, zeroValue,
mainValue.CompareTo(zeroValue),
(Comparison) mainValue.CompareTo(zeroValue));
}
}
在这种情况下,比较结果表示为枚举,可以在函数之间 传递 。
另一种情况是你甚至可以 序列化 通过网络将比较结果作为数值(-1,0,1)(ajax调用的返回值,例如)
像这样的数字比较可能没什么关系,但PatrykĆwiek在评论中指出。可以通过界面使用CompareTo
,其他数据类型(包括您的自定义类型)可以 实现 。