title: Casting vs using the 'as' keyword in the CLR
body: <p>When programming interfaces, I've found I'm doing a lot of casting or object type conversion.</p>
  
  <p>Is there a difference between these two methods of conversion?  If so, is there a cost difference or how does this affect my program?</p>
  
  <pre><code>public interface IMyInterface
  {
      void AMethod();
  }
  
  public class MyClass : IMyInterface
  {
      public void AMethod()
      {
         //Do work
      }
  
      // Other helper methods....
  }
  
  public class Implementation
  {
      IMyInterface _MyObj;
      MyClass _myCls1;
      MyClass _myCls2;
  
      public Implementation()
      {
          _MyObj = new MyClass();
  
          // What is the difference here:
          _myCls1 = (MyClass)_MyObj;
          _myCls2 = (_MyObj as MyClass);
      }
  }
  </code></pre>
  
  <p>Also, what is "in general" the preferred method?</p>