Edit:новый String() не создает новый ссылочный объект в C#?
Почему этот вопрос не дублировать? Я не прошу разницу между .Equals()
и ==
. Я спрашиваю, как работает ==
. Я имею в виду, когда я создал строки, используя другой метод, я должен был увидеть другой результат. Но я вижу тот же результат.
Я искал ==
Оператор в C#. К моему удивлению, он дал тот же результат для следующих кодов (вопреки JAVA). Но согласно this, ==
для контрольной проверки, и я должен увидеть другой результат для моего кода, то почему я вижу тот же результат для обоих из них? Разве я не вижу разные результаты для своих кодов? Это потому, что new String()
в C# не генерирует новую ссылку?
String s = "abc";
String s1 = "abc";
Console.WriteLine("Expected output: True, Actual output: " + (s1==s).ToString());
Выход
Ожидаемый результат: Правда, Фактический выход: Правда проверка
Другой код
String s2 = new String("abc".ToCharArray());
String s3 = new String("abc".ToCharArray());
Console.WriteLine("Expected output: False, Actual output: " + (s2 == s3).ToString());
Выход
Ожидаемый результат: Ложные, Фактический выход: Правда
Примечание: Я понимаю, чем различие, присвоенный & проверки значения. Я пробовал результат с ReferenceEquals
, и он показывает ожидаемый результат для меня.
Если дубликат не распространяется на вашу проблему, обязательно проверьте результаты поиска http://www.bing.com/search?q=java+c%23+string+equals, чтобы узнать, есть ли дубликат. –
@AlexeiLevenkov Я отредактировал свой вопрос, чтобы показать, почему он не является дубликатом другого вопроса SO.Пожалуйста, посмотрите на него :) – Abhishek
@Abhishek - В обоих случаях вы создаете строку ' "ABC"' и сравнивать ' "ABC" == "ABC"'. Почему вы ожидаете «ложь» на втором примере? – Kobi