ReferenceEquals против оператора "==" [дубликат]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ReferenceEquals против оператора "==" [дубликат]

Сообщение Anonymous »


насколько я знаю, оператор «==" для ссылочных переменных проверяет, указывают ли переменные на одну и ту же точку памяти, но согласно исходному коду функции ReferenceEquals(a, b), он также проверяет, указывают ли две переменные на одну и ту же точку памяти, код: public static bool ReferenceEquals(object? objA, object? objB) => objA == objB;. Но когда я решил проверить, как это работает со строкой, я заметил, что этот оператор и функция возвращают разные результаты

Вот моя попытка:

string a = new string("Джон"); строка b = новая строка («Джон»); Console.WriteLine(ReferenceEquals(a, b)); //возвращает Ложь Console.WriteLine(a==b); // возвращает истину Но исходный код ReferenceEquals такой же, как оператор «==", поэтому на самом деле я предполагал, что Console.WriteLine(a==b); также вернет False, поскольку проверяет наличие двух переменных укажите одно и то же место в памяти, поэтому я намеренно создал строку с помощью ключевого слова «new», потому что я знаю, как работает интернирование строк, поэтому я намеренно создал разные места в памяти для разных переменных с помощью нового ключевого слова. Итак, мой первый вопрос: не могли бы вы сказать мне, почему «a==b» возвращает True, поскольку a и b указывают на разные ячейки памяти? Второй вопрос: не могли бы вы рассказать мне, как интернирование работает для массивов, насколько я понимаю, оно отличается от интернирования строк, есть ли какие-нибудь хорошие ресурсы? Спасибо за внимание!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»