I found a good explanation here :
... because public fields are not recommended. Although they may be convenient for quick and dirty code, they are not versions. Using properties instead allows you to change the access logic and storage data behind covers, as well as add validation logic when a value is assigned. In addition, access properties feel almost the same, and have no performance overhead.
source
share