Здравствуйте, c004, Вы писали:
C>1.
C>Кто-нибудь задавался вопросом , есть ли смысл использования …
C>Пару раз я делал так
C>static readonly PropertyChangedEventArgs __propname__ = PropertyResolver.Resolve( __propname__ )
C>PropertyResolver — простой threadsafe словарь
Нормально в варианте со словарём, но смысла не имеет: в обычных сценариях этот объект (PropertyChangedEventArgs) создаётся не так часто, что бы имело смысл его кешировать. Что-то где-то у вас изменилось, сообщили об этом. Если поменялось сразу много — выставили имя свойства в пустую строку. То есть, одновременно много таких объектов не живут. Прикиньте, при активной работе — сколько экземпляров в сукунду будет создаваться? один-два? Вряд ли и микроскопом можно будет заметить. Лучше боритесь активно с боксингом, замыканиями и т.п.
С пустым именем создавал такой глобальный объект, но не столько ради экономии памяти, сколько для сокращения набора текста и овышения читабельности. В результате на 100% не уверен :о)
public static readonly PropertyChangedEventArgs Empty { get; } = new PropertyChangedEventArgs(String.Empty);
…
OnPropertyChanged(new PropertyChangedEventArgs(String.Empty));
// vs
OnPropertyChanged(PropertyChanged.Empty);