Regarding whether the fields should be private, that's just the new (c# 3?) way of declaring properties without having a backing variable. A common variation is
public string SomeProperty {get; protected set}`
'Course, as soon as you want to do something like validation in the setter this doesn't work and you have to go back to writing setters and getters, and declaring a backing variable.
I'm not sure what the intent of the static CurrentPerson.Person() method is, or how it gets set.
For the third question, if I understand you right you'd give the Person class a property of type Address and access it something like this:
Console.WriteLine(somePerson.HomeAddress.City);
upsidedowncreature
2009-05-07 21:50:46