I have this program, getting information from the user. I have set p as a Patient class that I have defined. I have gotten a first name and last name as strings with p.FirstName and p.LastName. I also need to get address information and phone number information. Both the Address and Phone Number need to be classes. I have these classes set up with default getters and setters. For some reason, when I call p.Paddress.Street = Console.Readline(); it comes back with this error. "System.NullReferenceException: 'Object reference not set to an instance of an object.'" What am I doing wrong?
public Patient(string first, string last, char gender, char married, DateTime dob, decimal money, Address paddress, PhoneNumber homenumber, PhoneNumber mobilenumber)
{
FirstName = first;
LastName = last;
Gender = gender;
Married = married;
DateOfBirth = dob;
Expenses = money;
Paddress = paddress;
HomeNumber = homenumber;
MobileNumber = mobilenumber;
}//end method
//getters and setters
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
public decimal Expenses { get; set; }
public char Gender { get; set; }
public char Married { get; set; }
public Address Paddress { get; set; }
public PhoneNumber HomeNumber { get; set; }
public PhoneNumber MobileNumber { get; set; }
public static void Add(Patient p)
{
string answer;
bool run;
Console.Write("First Name: ");
p.FirstName = Console.ReadLine();
Console.Write("Last Name: ");
p.LastName = Console.ReadLine();
//gender
do
{
run = true;
Console.Write("Gender (M/F): ");
answer = Console.ReadLine();
if (answer.Length < 1)
{
run = false;
continue;
}
if (answer.Length > 1)
{
run = false;
continue;
}
p.Gender = answer.ToUpper()[0];
if (p.Gender != 'M' && p.Gender != 'F')
{
run = false;
}
}
while (!run);
//marital status
do
{
run = true;
Console.Write("Married (Y/N)?: ");
answer = Console.ReadLine();
if (answer.Length < 1)
{
run = false;
continue;
}
if (answer.Length > 1)
{
run = false;
continue;
}
p.Married = answer.ToUpper()[0];
if (p.Married != 'Y' && p.Married != 'N')
{
run = false;
}
}
while (!run);
Console.Write("Date of Birth: ");
p.DateOfBirth = DateTime.Parse(Console.ReadLine());
Console.Write("Expenses ($): ");
p.Expenses = decimal.Parse(Console.ReadLine());
Console.Write("Street Address: ");
p.Paddress.Street = Console.ReadLine();
Console.Write("City: ");
p.Paddress.City = Console.ReadLine();
Console.Write("State: ");
p.Paddress.State = Console.ReadLine();
Console.Write("Zip: ");
p.Paddress.Zip = int.Parse(Console.ReadLine());
Console.Write("Home Phone: ");
p.HomeNumber.Number = Console.ReadLine();
Console.Write("Mobile Phone: ");
p.MobileNumber.Number = Console.ReadLine();
}//end add method