Сначала удостоверьтесь, что это равняется, реализован правильно. От статья IBM DeveloperWorks:
- Симметрия: Для двух ссылок, a и b, a.equals (b), если и только если b.equals (a)
- Рефлексивность: Для всех ненулевых ссылок, a.equals (a)
- Транзитивность: Если a.equals (b) и b.equals (c), то a.equals (c)
Тогда удостоверяются, что их отношение с хэш-кодом уважает контакт (от той же статьи):
- Непротиворечивость с хэш-кодом (): Два равных объекта должны иметь тот же хэш-код () значение
Наконец, хорошая хеш-функция должна стремиться приблизиться идеальная хеш-функция .
, чтобы ответить на вопрос, нет.
Но IMO это не должно быть сделано в любом случае, если текст будет статичным.
У меня есть чтение в моих ответах на локализацию и ресурсы:
Местоположение строки ресурсов
Глобализация существующих приложений Windows Forms
Использование файлов .resx для глобальных приложений Сообщений
Единственный способ, который я могу придумать, - это создать настраиваемый элемент управления, который добавлял бы свойство для имени ресурса. Когда свойство установлено, возьмите значение из файла ресурсов проекта и установите с ним свойство text. Убедитесь, что текст не сериализуется, иначе он может перезаписать значение, заданное параметром ResourceName.
public class ResourceLabel
: Label
{
private string mResourceName;
public string ResourceName
{
get { return mResourceName; }
set
{
mResourceName = value;
if (!string.IsNullOrEmpty(mResourceName))
base.Text = Properties.Resources.ResourceManager.GetString(mResourceName);
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Text
{
get { return base.Text; }
set
{
// Set is done by resource name.
}
}
}