using System;
class A
{
public string getData()
return "666";
}
class B
public B getData()
return new B();
public static string operator +(B a, B b)
return "Bullshit hahahaha";
class C
public int getData()
return 666;
public class Program
public static void Main()
//STEP 1: just try this with A,B and C ..no Compiler Issue and three different things that happen
var model = new A();
//Represents a small worker which should concatenate strings
var data = model.getData();
Console.WriteLine(data + data);
//versus explicit type
//STEP 2: Comment the below lines out and repeat STEP 1...
//string data2 = model.getData();
//Console.WriteLine(data2 + data2);
//Step 3: think about it the next time if you refactor something!