3. Properties ( smart fields)
ensure accuracy and validity of values of fields.
Use of properties
Modifies private values
Validates private values
Performs required actions
Implements abstraction and encapsulation.
4. Get & Set accessors
https://gist.github.com/2391947
8. Real world use cases of properties
Lazy Initialization
http://www.codeproject.com/Articles/275932/Lazy-Loading-in-Csharp
Dirty Tracking
http://stackoverflow.com/questions/33469/caching-patterns-in-asp-net
10. Indexers
are data members that allow access data within objects in a way
similar to accessing arrays.
fast access to the data within an object as they help in indexing the
data
called smart arrays