using static System.Console;
public class Program {
public static void Main() {
// cria duas variáveis iguais mas distintas uma da outra
string a = new string(new char[] {'h', 'e', 'l', 'l', 'o'});
string b = new string(new char[] {'h', 'e', 'l', 'l', 'o'});
WriteLine (a == b);
WriteLine (a.Equals(b));
// o mesmo teste usando os mesmo dados mas como variáveis do tipo `Object`
object c = a;
object d = b;
WriteLine (c == d);
WriteLine (c.Equals(d));
WriteLine("-----------------");
int myInt = 1;
short myShort = 1;
object objInt1 = myInt;
object objInt2 = myInt;
object objShort = myShort;
WriteLine(myInt == myShort); // cenário 1 true
WriteLine(myShort == myInt); // cenário 2 true
WriteLine(myInt.Equals(myShort)); // cenário 3 true
WriteLine(myShort.Equals(myInt)); // cenário 4 false!
WriteLine(objInt1 == objInt1); // cenário 5 true
WriteLine(objInt1 == objShort); // cenário 6 false!!
WriteLine(objInt1 == objInt2); // cenário 7 false!!!
WriteLine(Equals(objInt1, objInt2)); // cenário 8 true
WriteLine(Equals(objInt1, objShort)); // cenário 9 false!?!
WriteLine("-----------------");
string s1 = "abc";
string s2 = "abc";
WriteLine(object.ReferenceEquals(s1, s2)); //retorna true
string s3 = "abc";
string s4t = "ab";
string s4 = s4t + "c";
WriteLine(object.ReferenceEquals(s3, s4)); //retorna false
WriteLine(s3 == s4); //retorna true
}
}
//https://pt.stackoverflow.com/q/18910/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwoKcHVibGljIGNsYXNzIFByb2dyYW0gewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7CiAgICAgICAgLy8gY3JpYSBkdWFzIHZhcmnDoXZlaXMgaWd1YWlzIG1hcyBkaXN0aW50YXMgdW1hIGRhIG91dHJhCiAgICAgICAgc3RyaW5nIGEgPSBuZXcgc3RyaW5nKG5ldyBjaGFyW10geydoJywgJ2UnLCAnbCcsICdsJywgJ28nfSk7CiAgICAgICAgc3RyaW5nIGIgPSBuZXcgc3RyaW5nKG5ldyBjaGFyW10geydoJywgJ2UnLCAnbCcsICdsJywgJ28nfSk7CiAgICAgICAgV3JpdGVMaW5lIChhID09IGIpOwogICAgICAgIFdyaXRlTGluZSAoYS5FcXVhbHMoYikpOwogICAgICAgIC8vIG8gbWVzbW8gdGVzdGUgdXNhbmRvIG9zIG1lc21vIGRhZG9zIG1hcyBjb21vIHZhcmnDoXZlaXMgZG8gdGlwbyBgT2JqZWN0YAogICAgICAgIG9iamVjdCBjID0gYTsKICAgICAgICBvYmplY3QgZCA9IGI7CiAgICAgICAgV3JpdGVMaW5lIChjID09IGQpOwogICAgICAgIFdyaXRlTGluZSAoYy5FcXVhbHMoZCkpOwoJCVdyaXRlTGluZSgiLS0tLS0tLS0tLS0tLS0tLS0iKTsKCQlpbnQgbXlJbnQgPSAxOwoJCXNob3J0IG15U2hvcnQgPSAxOwoJCW9iamVjdCBvYmpJbnQxID0gbXlJbnQ7CgkJb2JqZWN0IG9iakludDIgPSBteUludDsKCQlvYmplY3Qgb2JqU2hvcnQgPSBteVNob3J0OwoJCVdyaXRlTGluZShteUludCA9PSBteVNob3J0KTsgICAgICAgICAgLy8gY2Vuw6FyaW8gMSB0cnVlCgkJV3JpdGVMaW5lKG15U2hvcnQgPT0gbXlJbnQpOyAgICAgICAgICAvLyBjZW7DoXJpbyAyIHRydWUKCQlXcml0ZUxpbmUobXlJbnQuRXF1YWxzKG15U2hvcnQpKTsgICAgIC8vIGNlbsOhcmlvIDMgdHJ1ZQoJCVdyaXRlTGluZShteVNob3J0LkVxdWFscyhteUludCkpOyAgICAgLy8gY2Vuw6FyaW8gNCBmYWxzZSEKCQlXcml0ZUxpbmUob2JqSW50MSA9PSBvYmpJbnQxKTsgICAgICAgIC8vIGNlbsOhcmlvIDUgdHJ1ZQoJCVdyaXRlTGluZShvYmpJbnQxID09IG9ialNob3J0KTsgICAgICAgLy8gY2Vuw6FyaW8gNiBmYWxzZSEhCgkJV3JpdGVMaW5lKG9iakludDEgPT0gb2JqSW50Mik7ICAgICAgICAvLyBjZW7DoXJpbyA3IGZhbHNlISEhCgkJV3JpdGVMaW5lKEVxdWFscyhvYmpJbnQxLCBvYmpJbnQyKSk7ICAvLyBjZW7DoXJpbyA4IHRydWUKCQlXcml0ZUxpbmUoRXF1YWxzKG9iakludDEsIG9ialNob3J0KSk7IC8vIGNlbsOhcmlvIDkgZmFsc2UhPyEKCQlXcml0ZUxpbmUoIi0tLS0tLS0tLS0tLS0tLS0tIik7CgkJc3RyaW5nIHMxID0gImFiYyI7CgkJc3RyaW5nIHMyID0gImFiYyI7CgkJV3JpdGVMaW5lKG9iamVjdC5SZWZlcmVuY2VFcXVhbHMoczEsIHMyKSk7IC8vcmV0b3JuYSB0cnVlCgkJc3RyaW5nIHMzID0gImFiYyI7CgkJc3RyaW5nIHM0dCA9ICJhYiI7CgkJc3RyaW5nIHM0ID0gczR0ICsgImMiOwoJCVdyaXRlTGluZShvYmplY3QuUmVmZXJlbmNlRXF1YWxzKHMzLCBzNCkpOyAvL3JldG9ybmEgZmFsc2UKCQlXcml0ZUxpbmUoczMgPT0gczQpOyAvL3JldG9ybmEgdHJ1ZQogICAgfQp9CgovL2h0dHBzOi8vcHQuc3RhY2tvdmVyZmxvdy5jb20vcS8xODkxMC8xMDE=