Вам также необходимо переопределить GetHashCode()
(и предпочтительно также Equals()
). В противном случае объект возвращает другой хэш-код, что означает, что ключ не найден при поиске.
Контракт GetHashCode()
указывает, что возвращаемое значение из двух объектов ДОЛЖНО быть равным, если два объекты считаются равными. Это корень вашей проблемы; ваш класс не отвечает этому требованию. Контракт не указывает, что значение должно быть иным, если оно не равно, но это улучшит производительность. (Если все объекты возвращают один и тот же хэш-код, вы также можете использовать плоский список с точки зрения производительности.)
Простая реализация в вашем случае может быть:
public override int GetHashCode()
{
return AValue.GetHashCode() ^ BValue.GetHashCode();
}
Обратите внимание, что было бы неплохо проверить, есть ли AValue
или BValue
null
. (Это будет несколько сложно, поскольку вы не сдерживаете общие типы A
и B
, поэтому вы не можете просто сравнивать значения с null
- например, типы могут быть типами значений.) 1
Также неплохо сделать классы, которые вы намереваетесь использовать, поскольку словарные ключи неизменяемы. Если вы измените значение объекта, который используется в качестве ключа, словарь проявит странное поведение, так как объект теперь находится в ведре, где он не принадлежит.
1 Обратите внимание, что вы можете использовать EqualityComparer.Default.GetHashCode(AValue)
(и аналогичный для BValue
) здесь, так как это устранит необходимость нулевой проверки.
Добавьте android:screenOrientation="portrait"
к действию в AndroidManifest.xml. Например:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
РЕДАКТИРОВАНИЕ: Так как это стало суперпопулярным ответом, я чувствую себя очень виновным, поскольку принуждение портрета редко является правильным решением проблем, к этому часто относятся.
главные протесты с принудительным портретом:
retainInstance
фрагменты. , Таким образом, большинство приложений должно просто позволить телефонным датчикам, программному обеспечению, и физическая конфигурация принимает их собственное решение относительно того, как пользователь хочет взаимодействовать с Вашим приложением. Несколько случаев, о которых можно все еще хотеть думать, тем не менее, если Вы не довольны поведением по умолчанию sensor
ориентация в Вашем варианте использования:
nosensor
для ориентации. Это вызывает среду на большинстве планшетов и портрет по большинству телефонов, но я все еще не рекомендовал бы это для большинства "нормальных" приложений (некоторые пользователи точно так же, как для ввода в среде softkeyboard по их телефонам и многому чтению пользователей планшетов в портрете - и необходимо позволить им). sensorPortrait
может быть лучше, чем portrait
для Android 2.3 +; это допускает перевернутый портрет, который довольно распространен в использовании планшета.
-X
переключатель должен прибыть перед каждым именем файла. Таким образом для удаления нечто и панели используйтеhg qrefresh -X foo -X bar
. – nmichaels 21 March 2012 в 20:55