title: Why does C# not allow explicitly calling operators or property accessors?
body: <p>The C# spec probably says so, but even though nothing showed up in my search, that's not the answer I'm looking for.</p>
  
  <p>I'm looking for scenarios that show that calling operator methods (like <code>op_Addition</code>) or property accessors (like <code>get_Length</code>) directly might be a bad idea. <strong>Bad enough for the designers of the C# language to stop us from doing it.</strong> (See <a href="http://msdn.microsoft.com/en-us/library/z47a7kdw.aspx" rel="nofollow noreferrer">compiler error CS0571</a>.)</p>
  
  <p>One fairly common scenario where it would be useful to have this ability is where a <code>Func&lt;T&gt;</code> delegate should return the value of a property. You can't make the get accessor the method of the delegate, either. There's a simple work-around (use <code>() =&gt; someObject.SomeProperty</code>), but, even aside from the overhead, it's not as clear as <code>someObject.get_SomeProperty</code>.</p>
  
  <p>The one complication I see is that, when a type defines multiple conversions to different types, the methods would have the same signature with different return types, which C# doesn't allow either. But that's a <a href="https://stackoverflow.com/questions/1596628/why-dont-languages-allow-overloading-of-methods-by-return-value">different question</a>.</p>