Оператор ==
проверяет, являются ли две переменные в действительности буквальными ссылками на один и тот же объект в памяти.В вашем примере вы создаете два Джеймса.Они могут быть близнецами (то есть они могут иметь одинаковый объем памяти), но это не одно и то же лицо (то есть у них две разные области памяти).Если бы вы написали:
Person a = new Person("james");
Person b = a;
Console.WriteLine(a == b);
, вы бы получили true
, потому что a и b - это только два имени одного и того же Джеймса.