A property gives you several advantages over a simple public field:
- you can control whether the property is read-only, write-only, or read/write
- you can hide the actual implementation (maybe in the setter you want to do more than just setting a value)
- when using databinding (e.g. in ASP.NET), you'll have to use properties (does not work with fields)