Because Convert.ToInt32
rounds:
Return Value: rounded to the nearest 32-bit signed integer. If value
is halfway between two whole numbers, the even number is returned;
that is, 4.5 is converted to 4, and 5.5 is converted to 6.
…while the cast truncates:
When you convert from a double or float value to an integral type, the
value is truncated.
Update: See Jeppe Stig Nielsen’s comment below for additional differences (which however do not come into play if score
is a real number as is the case here).