Почему получаю False при сравнение 2-х одинаковых строк?

Сравнение строк в C# (и многих других языках программирования) требует особого подхода, поскольку строки являются ссылочным типом данных. В C#, по умолчанию оператор сравнения (==) сравнивает ссылки на объекты, а не их содержимое. Поэтому, даже если две строки имеют одинаковое содержимое, они могут размещаться в разных местах в памяти и, следовательно, оператор сравнения вернет False.

Чтобы сравнить содержимое строк, вам необходимо использовать методы сравнения строк, такие как string.Equals или string.Compare. Например:

string str1 = "Hello";
string str2 = "Hello";

bool result = string.Equals(str1, str2);

В этом примере result будет равен True, потому что метод string.Equals сравнивает содержимое строк, а не ссылки на них.

Также важно отметить, что C# предоставляет возможность использовать оператор сравнения (==) для строк при помощи особого правила "оптимизации строк". В этом случае компилятор C# будет автоматически заменять оператор сравнения строк на вызов метода string.Equals. Это правило помогает упростить код и сделать его более читаемым. Таким образом, вы можете безопасно использовать оператор сравнения (==) для сравнения строк в C#, предоставляя, что вы знаете о правиле "оптимизации строк".

Например:

string str1 = "Hello";
string str2 = "Hello";

bool result = (str1 == str2);

В этом случае result также будет равен True, потому что компилятор автоматически заменит оператор сравнения на вызов метода string.Equals.

Надеюсь, этот ответ прояснил, почему вы получаете False при сравнении двух одинаковых строк и как правильно сравнивать строки в C#.