title: Isn't IValueConverter just an example of "Conversions with helper classes"
body: <p>A coworker and myself where discussing conversion in .NET he pointed out there are four ways to convert a type, at first I could only come up with two, implicit and explicit then he pointed out user defined conversions and using helper classes so I decided to look it up here <a href="http://msdn.microsoft.com/en-us/library/ms173105.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms173105.aspx</a> while reading that it dawned on me that I do a lot of WPF and often times use the IValueConverter interface. </p>
  
  <p>My Question started as - isn't IValueConverter just an example of a conversion with a helper class (when you implement it of course)? Then I was like well, what is the real difference between user-defined conversions and conversions with a helper class? If you follow the links from the above mentioned MSDN page the documentation is sorda slim. Like this is the example from the conversion operators page. </p>
  
  <pre><code>class SampleClass
  {
      public static explicit operator SampleClass(int i)
      {
          SampleClass temp = new SampleClass();
          // code to convert from int to SampleClass...
  
          return temp;
      }
  }
  </code></pre>
  
  <p>It doesn't really make it so clear. To me it looks like a static class that needs an int in the ctor? </p>
  
  <p>Anyway - Hopefully some C# ninja can illuminate this subject. One final thought is, I generally try and stay away from converting things unless there is a real good reason (i.e. parsing a spreadsheet) in regular everyday code I tend to think of it as a code smell, is that considered best practice? </p>
  
  <p>Thanks</p>