If I understand it correctly, CInt is only for conversion of compatible (and thus convertible) types.
You can convert a numeric type that is not an System.Integer32 (i.e. float, decimal, byte, single, etc.) into an System.Integer32 if the value is really an integer. If you tried to convert 1.1 to a System.Integer32 it would throw an exception.
You can not convert a System.String to a System.Integer32 even if the string's value is a numeric value (ex. "1"). You must parse the string. In the same vain, you basically can't convert a string to anything (perhaps aside from System.Object). It must be parsed (read) into the appropriate type (numeric, datetime, etc).
-Peter
compiledthoughts.com