Automático .ToString ()?

Eu tenho um método como este:void m1(string str) e tem uma classe como esta:

public class MyClass
{
    public bool b1 { set; get; }

    //and other properties
}

Agora, por que o código a seguir não causa erro de compilação?

IClass2 _class2 = new Class2();
MyClass c1 = new MyClass();
_class2.m1("abcdef" + c1);

Quando eu depuro, percebi quec1.ToString() foi passado param1. Por que esse automático.ToString() ocorreu? A única coisa que eu poderia dizer é que m1 foi definido emIClass2 interface e foi implementado porClass2.

questionAnswers(2)

yourAnswerToTheQuestion