Actually there is an answer to this question, but I believe that he only received it by asking another:
Get the desired behavior from using a variable or property?
Often a property performs data operations, that is, you cannot get exact values from one to another. As a rule, they don’t do anything “expensive” and do not produce side effects that appear in other shadow-related elements of the class (properties should not do this), but one of the advantages of the properties is the presence of a “mask”, therefore speaking, providing the desired behavior when receiving and tuning, which may differ from a direct return or destination, where the variables are raw, genuine data, this is what you will need to look for.
For example, you can find a property for X never returns null, but the base variable can be, and sometimes even null - in this case, your operations may depend on checking the null value, while the property provides a "safe bet" on the street. Therefore, you must work with the main element in this particular case.
Obviously, you should strive for some model of coherence in this practice, but the above principle and practice will be mainly dictated for each decision, project or even class!
source share