We can't tell from that - assuming that ReadAddress works, the code you give should be ok. Personally, I wouldn't use an out parameter and a bool, but would look at returning either a contact or a null instead:
private Contact ReadInput()
{
Contact contact = new Contact();
contact.AddressData = ReadAddress();
return ReadName(contact) ? contact : null;
}
public Address ReadAddress() { return new Address(); }
public bool ReadName(Contact c)
{
c.FirstName = "John";
c.LastName = "Smith";
return true;
}
(The methods are just stubs to give you the general idea)
Start by putting a breakpoint on teh first line of you ReadInput method - then step through and look at your variables as you go. If you can't work it out from there, then we need to see the relevant code.