There is a fundamental difference here. In one case you say, "I'm going to just assume this is an
int", and in the former, you ask the reader to give you an
int. If the value is already an
int, I would not expect any difficulty. However, what happens when the value is a
Int64? You're casting it to an
int which is only 4 bytes long. You may get unexpected surprises this way if you're lucky. If you're not, the program continues like nothing happened, and you wind up with a value missing its upper 4 bytes.
However if you ask the reader to give you an
Int32, you will see it complain should there be some problems with doing so. It might seem contrary writing code to potentially create exceptions, but it works in your favor ultimately, trust me. Even if something does go wrong when you don't expect it, the error is clear and can be fixed easily.
If you have a value that doesn't reflect what is read, it may cause problems elsewhere in your program and leave you scratching your head as to why.