Все объекты гарантированно имеют метод .equals()
, поскольку Object содержит метод, .equals()
, который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. С помощью ==
) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals()
и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.
Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder
. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==
, это был бы прекрасный способ. Строки сами не делают.
Это происходит только на моей машине, коллеги с одинаковыми машинами (с одинаковым аппаратным и программным обеспечением) и разными машинами не сталкиваются с этой проблемой.
blockquote>Я проверил ваш код, и он похож на
CameraFrames
официальный пример кода. У меня есть тест с LifeCam HD-3000 , и он работает хорошо (без изменения реестра). Я думаю, что очень вероятно, что есть проблема с вашим аппаратным устройством. Я думаю, что вы могли бы использовать другие камеры для устранения неполадок. Для использования камеры вы также можете проверить этот образец .