Operaattorien kuormitus

1 + 1 = 2, mutta mitäpä on kahvi + maito? Operaattoreita on mahdollista kuormittaa, jolloin voimme luoda niille oman toteutuksen.
public class Kahvi
{
	// kuormitamme operaattorin +
	public static MaitoKahvi operator +(Kahvi kahvi, Maito maito)
	{
		return new MaitoKahvi(kahvi,maito);
	}
}
public class Maito
{
}
public class MaitoKahvi
{
	private Kahvi kahvi;
	private Maito maito;

	public MaitoKahvi(Kahvi kahvi, Maito maito)
	{
		this.kahvi = kahvi;
		this.maito = maito;
	}
}

Ja nyt voimme laskea yhteen kahvi + maito

Kahvi kahvi = new Kahvi();
Maito maito = new Maito();
MaitoKahvi maitokahvi = kahvi + maito;

Operaattori toimii vain noin päin, toinen operaattorin kuormitus tarvitaan operaatiolle maito + kahvi. Järjestyksellä on väliä.