* How many times would you need to call a property before its better to cache it locally ? That would, IMHO, depend on the type too, the cost of declaring an integer and copying data to it would be less than, say a string (that is generally a managed ANSIString for most of us).
Me: Everytime. First, always locally cache property calls will save you from guesswork whether that property is mapped to a method or mere field. Second, usually a property call is a long chain (e.g.: AListBox.Items.Count), save some typing as you may not know
eventually how many times it will be called.