From my perspective, using properties in lieu of variables boils down to:
Pros
- Can set a break point for debugging, as Jared mentioned,
- Can cause side-effects, like Rex's
EnsureValue(),
- The get and set can have different access restrictions (public get, protected set),
- Can be utilized in Property Editors,
Cons
- Slower access, uses method calls.
- Code bulk, harder to read (IMO).
- More difficult to initialize, like requiring
EnsureValue();
Not all of these apply to int Limit {get; set;} style properties.