"Type Conversions"

int i = 3;
uint u = (uint) i; // Conversion - When one type is deliberately and explicitly converted to another
long l = i; // Coercion - When one type is implicitly coerced to another

object o = "My string";
string s = (string) o; // Cast - When an object's type is narrowed or widened along its inheritance heirarchy, or reinterpreted to/from an interface


Code snippet taken from "Postmortems - Tale of Two Casts".