Если предположить, что DataKeys
- это свойство, то gvUnits.DataKeys
- это, по сути, вызов метода (вызов геттера). Таким образом, если вы вызываете его дважды, нет гарантии, что он не вернет ноль при втором вызове.,Аналогично, если DataKeys[index]
является вызовом индексатора (не доступом к массиву), это также вызов метода, который, как и выше, может возвращать ноль при втором вызове.Единственный способ обеспечить гарантированное утверждение - сохранить результат каждого вызова в локальной переменной, а затем утверждать, что локальное значение не равно нулю.Поскольку локальное значение не может меняться между использованиями, ReSharper знает, что это безопасно.
Это один из тех случаев, когда вы делаете неявное предположение, даже не осознавая его (что возвращаемое значение свойства не будет мутироватьмежду вызовами.) Вы можете подавить предупреждение с комментарием, если хотите, вместо того, чтобы создавать локальную копию для утверждения, которое в основном выдвигает предположение на реализацию свойства (чтобы гарантировать неизменяемость между последовательными вызовами.)