I am a bit skeptical as to why the third scenario returning false. And, how exactly object reference works
//Case 1
string a = "helloworld";
string b = "helloworld";
var result = object.ReferenceEquals(a, b); //Output is true
//Case 2
string a = "helloworld";
string b = "hello" + "world";
var result = object.ReferenceEquals(a, b); //Output is true
//Case 3
string a = "helloworld";
string b = "hello";
b = b + "world";
var result1 = object.ReferenceEquals(a, b); //Output is false