«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > C# Сравнение строк: когда string.equals () и == эквивалентное?

C# Сравнение строк: когда string.equals () и == эквивалентное?

Опубликовано в 2025-03-12
Просматривать:447

String Comparison in C#: When Are `String.Equals()` and `==` Interchangeable?

c# сбивает с толку в сравнении строк: есть ли string.equals () метод и == оператор взаимозаменяемый?

]

в C#сравнения строк иногда дают неожиданные результаты. Обычный вопрос заключается в том, является ли метод string.equals () и == оператор равных знаков ведут точно так же.

]

рассмотрим следующий фрагмент кода:

]
string s = "Category";
TreeViewItem tvi = new TreeViewItem();
tvi.Header = "Category";

Console.WriteLine(s == tvi.Header); // false
Console.WriteLine(s.Equals(tvi.Header)); // true
Console.WriteLine(s == tvi.Header.ToString()); // true
s

s и tvi.header tvi.header ] tvi, == operator возвращает false , while ] Различия ключей между string.equals ()

и

== ] Существует два фундаментальных различия между string.equals () и == operators:

]]

] Тип-специфическая реализация: ==

оператор сравнивается на основе типа объекта компиляции объекта, в то время как
    string.equals ()
  1. является полиморфным, что означает, что его реализация зависит от типа выполнения, сравниваемого объекта. ] null value Обработка: == оператор не будет выбросить исключение при сравнении нулевых ссылок, в то время как
  2. string.equals ()
  3. , если какой -либо параметр пуст, a nullReferencexception исключение будет сброшен. ] ] пример демонстрации различий ]]
  4. , чтобы проиллюстрировать эти различия, рассмотрите следующий код:
]

object x = new StringBuilder ("hello"). toString (); Object y = new StringBuilder ("hello"). toString (); if (x.equals (y)) // true if (x == y) // false

]

хотя

x
object x = new StringBuilder("hello").ToString();
object y = new StringBuilder("hello").ToString();

if (x.Equals(y)) // True

if (x == y) // False
y

] Оператор возвращает false , потому что он сравнивается на основе типа времени компиляции объекта ( object ), который отличается. Чтобы получить правильное сравнение, объект должен быть явно преобразован в соответствующий тип (в данном случае string ). ] string xs = (string) x; string ys = (строка) y; if (xs == ys) // true ]

в заключение
string xs = (string)x;
string ys = (string)y;

if (xs == ys) // True
string.equals ()

и == операторы обычно используются взаимозаменяемо, важно понимать их нюансы в реализации и обработке нулевых значений. Чтобы обеспечить надежное и последовательное сравнение строк, обычно рекомендуется метод

, особенно при сравнении различных типов объектов или обработки пустых ссылок.

]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3