Если бы это был не string
, что бы вы предложили? Это не может быть PropertyInfo
, поскольку не все типы, которые поддерживают это, используют статическую типизацию - например, DataTable
предоставляет модель пользовательских свойств для целей привязки, как и многие другие типы (через любой из ICustomTypeDescriptor
, TypeDescriptionProvider
или ITypedList
).
Даже если бы это было a PropertyInfo
, или даже если это было PropertyDescriptor
, вы не могли бы сделать сравнение по этому вопросу: a: это заняло бы лот работы по получению справочного поиска, b: вам даже не гарантировано (для PropertyDescriptor
в частности) возвращать один и тот же объект каждый раз, когда вы смотрите.
Так что это означает, что вы, вероятно, в конечном итоге сравните имя (a string
) в любом случае .
Использование string
позволяет вызвать это событие дешево и сравнительно дешево - сравнение строк выполняется довольно быстро, учитывая, что большинство имен свойств довольно короткие и почти все из них содержат менее 30 символов. Это будет сравнительно быстро, и это не узкое место. В большинстве случаев «что делать, теперь это изменилось» займет лот больше времени, чем это сравнение строк.
Передо мной нет реализации, но я бы надеялся , что проверка на равенство строк в основном:
- та же ссылка? вернуть true
- разной длины? вернуть false
- сравнить символ за символом; вернуть ложь при первой разнице
- вернуть true
так что это не должно быть проблемой, если все ваши свойства не имеют одинаковую длину и b: очень значительную длину
В основном: не беспокойтесь об этом.