Delegates are immutable, so when you run, for example, this line (which calls Delegate.Remove):
carHandler2 -= PrintText2;
you create a new delegate and save it in carHandler2instead of modifying the existing one.
, , ( ):
String string1 = "Foo";
string1 += "Bar";
String string2 = string1;
string2 += "EvenMorebar";
string2 FooBarEvenMorebar, string1 - FooBar.