title: Implicit Converstion vs New
body: <p>I have the following class:</p>
  
  <pre><code>public class ChArray {
      private string m_str;
      public ChArray(string str) {
          m_str = (str.Length &gt; m_len ? str.Substring(0, m_len) : str);
      }
      public static implicit operator ChArray(string str) {
          return new ChArray(str);
      }
  }
  </code></pre>
  
  <p>I'm using this class as a dictionary key. Why are the following statements NOT equivalent? Using new, everything works just fine, but using a string, I get a key not found.</p>
  
  <pre><code>ChArray LINE_LEN = new ChArray("lineLen");
  ChArray LINE_LEN = "lineLen"
  </code></pre>
  
  <p>The implicit operation returns a new ChArray, so why wouldn't this work?</p>
  
  <p>Note that I'm not posting the full class to keep things simple. This DOES work if I use the new method.</p>