Ok...This is really starting to tick me off. I am getting a casting exception when i perform the following code. My book I'm reading says that I can downcast (Base ~~> Derived Class):

Code:
using System;
using CastingExample;

namespace CastingExample
{

	public class ClassA
	{
		public virtual void MyClassName()
		{
			Console.WriteLine("My Name is Class A");
		}
	}

	public class ClassB : ClassA
	{
		public override void MyClassName()
		{
			Console.WriteLine("My Name is Class B");			
		}

		public string HelloWorld()
		{
			return "Hello World";
		}
	}
}

public class TestHarness
{
	public static void Main()
	{
		CastingExample.ClassA myClassA = new CastingExample.ClassA();
		myClassA.MyClassName();		
	
		CastingExample.ClassB myClassB = new CastingExample.ClassB();
		myClassB.MyClassName(); 

		CastingExample.ClassA myNewA = (ClassA) myClassB;
		myNewA.MyClassName();
		
		// Casting Exception Here
		CastingExample.ClassB myB = (ClassB) myClassA;
	}
}