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:
]
Тип-специфическая реализация:
==
null value Обработка:
==
оператор не будет выбросить исключение при сравнении нулевых ссылок, в то время как ]
]
пример демонстрации различий
]]
object x = new StringBuilder ("hello"). toString (); Object y = new StringBuilder ("hello"). toString (); if (x.equals (y)) // true if (x == y) // false
]хотя
xobject 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