int myNum = 5;
decimal newNum = myNum;
Convert.ToInt32() can accept objects, strings, bytes, decimals, chars, etc. and it will still successfully convert it. object myNum = 7; int result = (int)myNum;Only works when the underlying cast is valid (and is only evaluated at runtime). The compiler assumes you know what you're doing. So, the most likely reason Convert.ToInt32() is working here is the underlying type in the row isn't actually an Int, but some other number type (or even string).