title: Difference between Explicit conversions and safe cast in c#
body: <p>First one is working, while second shows an error, what is the difference? 
  I read documentation, and didnt find anything about it, it not so crucial but want to know some features </p>
  
  <pre><code>public static string GetConcat2&lt;T&gt;(T q)
      {
          if(q.GetType() == typeof(A))
          {
              var z = q as A;
          }
          if (q.GetType() == typeof(A))
          {
              var z = (A)q;
          }
          return "!!!!";
      }
  public interface CustomInteface
  {
      string InterfaceProperty1 { get; set; }
      string InterfaceProperty2 { get; set; }
      string Concat();
  }
  public class A : CustomInteface
  {
      public string InterfaceProperty1 { get; set; }
      public string InterfaceProperty2 { get; set; }
      public string Concat() {
          return InterfaceProperty1 + InterfaceProperty2;
      }
  }
  </code></pre>