CompareTo()
tells you which, and if, one is greater/less than the other, while Equals()
simply tells you if they are equivalent values.
If all you want to know is "are they the same values", you use Equals()
. If you need to also know how they compare, use CompareTo()
int a = 50;
int b = 10;
//if you need to know if they are equal:
if(a.Equals(b)){
//won't execute
}
//this would check if they are equal, as well
if(a.CompareTo(b) == 0){
//won't execute
}
//if you need to know if a is bigger than b, specifically:
if(a.CompareTo(b) > 0){
//will execute
}
//this would check to see if a is less than b
if(a.CompareTo(b) < 0){
//won't execute
}
Finally, note that these Equals()
and CompareTo()
methods are not strictly needed for primitive types like int
, because the standard comparison operators are overloaded, so you could do these:
//this would check if they are equal, as well
if(a == b){
//won't execute
}
//if you need to know if a is bigger than b, specifically:
if(a > b){
//will execute
}
//this would check to see if a is less than b
if(a < b){
//won't execute
}
Finally, you mentioned string
in your question. Equals()
and CompareTo()
work as I have describe for string
as well. Just keep in mind the 'comparison' that CompareTo()
does on strings is based on alphabetical sorting, so "abcdefg" < "z"