public class Person
{
public string Name { get; set; }
// Let's investigate this one
public string Phone { get; set; }
}
// This is called an auto-implemented property. What does this really mean?
public string Phone { get; set; }
// This is the longhand / what really happens / the manual way to do this.
private string phone;
public string Phone
{
get { return phone; }
set { phone = value; }
}
// Now what is THIS doing? Example time..
// Make a Person1 of type Person.
Person Person1 = new Person();
// Add a value to the property of Person.
Person1.Phone = "123-4567"; // **#1 see below
// phone field
private string phone;
// phone property
public string Phone // **#1 hits this first, causing you to enter the braces..
{
get { return phone; } // #3 returns little case phone, which has been assigned to value as property Phone
set { phone = value; } // #2 sets the magical VALUE to little case phone
}
// So now if we ask for..
// thingy will be "123-4567";
var thingy = Person1.Phone;
// where do we get value from????
// "The word value references the value that client code is attempting to assign to the property." - MSDN
// In other words.. Microsoft took care of it for you.
// You try to access and set a property, it knows to assign that to "value"
// With this version, you can make a new property based on other properties / customization
// not there is only a get here. Its like a read only value
public string PhoneString
{
get
{
string phoneNumString = "";
// null safe it!
if (Person.Phone == null) return string.Empty;
// if there's an area code, add it on!
if (!string.IsNullOrWhiteSpace(Person.Phone.AreaCode))
phoneNumString = "(" + Person.Phone.AreaCode + ") " + Person.Phone.PhoneNumber;
else phoneNumString = Person.Phone.PhoneNumber; // if not, no biggie.
// if there's an extension, add it on too!
if (!string.IsNullOrWhiteSpace(Person.Phone.Extension)) phoneNumString += "ext." + Person.Phone.Extension;
return phoneNumString;
}
}
// So, running with the example above... here's what you can and can't do..
// NOPE. Can't set this. There is only a get.
Person1.Phonestring = "(813)123-4567 ext. 1000"; // This will fail and throw you an error. ANGRY RED SQUIGGLYS.
// But! You can do this. And then...
Person1.AreaCode = "813";
Person1.Phone = "123-4567";
Person1.Extension = "1000";
// result = "(813)123-4567 ext. 1000"
var result = Person1.Phonestring;
Get; Set;
Taking a step backwards from my normal posts to some more basics.. I wanted to explain Get; Set; on properties to anyone new to software. I felt like some of the descriptions online were a little non-user friendly and wanted to help clarify it. This is done in C#, but the concepts are the same idea with other languages.