Exception when defining the properties of a class

0

I am developing a database application in C# using VS. I have a class called Crew and has its own fields such name, date of birth ... etc. I want the user to specify some of the fields, while others to be automatically calculated/ figured out by the application itself. Such as age to be calculated from the date of birth. Here is how I am doing this:

[Required]
[DisplayName("Date of Birth")]
public DateTime DOB
{
    set { }
    get { return DOB.Date; }
}
public int Age
{
    get { return Convert.ToInt32(DateTime.Now.Year) - Convert.ToInt32(DOB.Year); }
}

While debugging, I fill out the fields for a person and hit the create button to save to the database, but an exception arises saying the following:

System.StackOverflowException occurred HResult=0x800703E9 Message=Exception of type 'System.StackOverflowException' was thrown.

c#
.net
asked on Stack Overflow Sep 17, 2017 by Mahmoud Hamad • edited Sep 17, 2017 by (unknown user)

1 Answer

2

In the getter for DOB, you reference DOB. So then it has to access the getter for DOB, which references DOB. So it has to access DOB....

A property cannot access itself when trying to get it's value, or you'll enter an infinite loop and get a SO exception. You can get around this by having a private backing field that stores the value, then access that in the property getter:

private DateTime _dob;

public DateTime DOB
{
    get { return _dob; }
    set { _dob= value; }
} 
answered on Stack Overflow Sep 17, 2017 by Jonesopolis • edited Sep 17, 2017 by Jonesopolis

User contributions licensed under CC BY-SA 3.0