This is such a broad, and general, question that I suggest you first read-up on the basics of casting, and "casting" compared to "conversion:" and then ask a more specific question here. At the most basic level: using 'casting' you are transforming one Type into another; this is simplistic, but I'd say with "conversion:" you are transforming a value of one Type into a value of another Type.
You might start here with this CP article: [
^], and then move on to read the broad content in these MSDN resources: [
^], and [
^].
You are going to need to learn why this does not work:
string someString = "100.0";
double someDouble = (double)someString;
But, this does:
double someDouble = Convert.ToDouble(someString);
As you are ready to study the use of the 'as' operator for casting: be sure and read this:[
^]. The "as" operator can only be used with Reference Types and Nullable Types: and you need to learn what those are.
When you have a strong foundation in basic understanding of "casting," then I suggest you take on the task of learning to use "casting" to an Interface, which is an advanced topic, but a powerful tool ... necessary for some important techniques like raising "notifications" ... valuable for passing an instance of an object which, because it is cast to an Interface, exposes a limited subset of its internal contents to other objects it is passed to.
good luck, Bill