using static System.Console;
public class Program {
public static void Main() {
var x = new MyList<int>();
var y = x;
WriteLine(x.Equals(y));
}
}
class MyList<T> {
public override bool Equals(object obj) {
WriteLine("instância");
if (obj is MyList<T>) {
return Equals((MyList<T>)obj, this);
}
return false;
}
public static bool Equals(MyList<T> listA, MyList<T> listB) {
WriteLine("estático");
return true;
}
}
//https://pt.stackoverflow.com/q/499387/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwoKcHVibGljIGNsYXNzIFByb2dyYW0gewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7CgkJdmFyIHggPSBuZXcgTXlMaXN0PGludD4oKTsKCQl2YXIgeSA9IHg7CgkJV3JpdGVMaW5lKHguRXF1YWxzKHkpKTsKCX0KfQoKY2xhc3MgTXlMaXN0PFQ+IHsKICAgIHB1YmxpYyBvdmVycmlkZSBib29sIEVxdWFscyhvYmplY3Qgb2JqKSB7CgkJV3JpdGVMaW5lKCJpbnN0w6JuY2lhIik7CiAgICAgICAgaWYgKG9iaiBpcyBNeUxpc3Q8VD4pIHsKICAgICAgICAgICAgcmV0dXJuIEVxdWFscygoTXlMaXN0PFQ+KW9iaiwgdGhpcyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGJvb2wgRXF1YWxzKE15TGlzdDxUPiBsaXN0QSwgTXlMaXN0PFQ+IGxpc3RCKSB7CgkJV3JpdGVMaW5lKCJlc3TDoXRpY28iKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQoKLy9odHRwczovL3B0LnN0YWNrb3ZlcmZsb3cuY29tL3EvNDk5Mzg3LzEwMQ==