Interacting with overloaded operators from overloaded operator challenged languages

Like the C++ language, C# allows you to overload operators for your custom types. For example, assume you have a structure named MyPoint which has overloaded the plus operator. If this is the case, you can ‘add’ two MyPoints as so:

// Add two MyPoint types to obtain a 
// 'bigger' Point.
MyPoint bigPoint = ptOne + ptTwo;

Although this is a very powerful technique, many C# programmers avoid doing so in fear of building non CLS-compliant types. Fear not! Every overloaded operator maps to a ‘special’ static CIL method which can be invoked by languages which do not natively support directly operator manipulation. In our case, ‘operator +’ maps to a method named ‘op_Addition()’. Given this, a VB.NET programmer could interact with MyPoint as so:

' Add two MyPoint types to obtain a 
' 'bigger' Point.
Dim bigPoint as MyPoint = _
  MyPoint.op_Addition(ptOne + ptTwo)

Tip from Andrew Troelsen
Posted by: Duncan Mackenzie, MSDN
This post applies to Visual C# .NET 2002/2003