#248 – Implementing a Property that Returns a Calculated Value
February 20, 2011 Leave a comment
When implementing a property, you might sometimes want to define a property that returns a calculated value, rather than just returning the value of an internal field.
Below is an example. We have a Dog class with Name and Age that each just wraps an internal field and are both read/write. We also define an AgeInDogYears property, which is read-only and returns the dog’s age in dog years.
The Age property is defined to encapsulate a private age field.
// Age in human years
private int age;
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
The AgeInDogYears property is read-only and returns the calculated dog-year age.
// Age in dog years
public float AgeInDogYears
{
get
{
float dogYearAge;
if (age < 1)
dogYearAge = 0;
else if (age == 1)
dogYearAge = 10.5f;
else
dogYearAge = 21 + ((age - 2) * 4);
return dogYearAge;
}
}