//...
}
}
The AddContact() method takes in a Contact object and prints out the details of the contact. Suppose that the Contact class has a AddToAddressBook() method that takes in an AddressBook object. This method adds the Contact object into the AddressBook object:
public class Contact {
public int ID;
public string FirstName;
public string LastName;
public string Email;
}
In this case, you use the this keyword to pass in the current instance of the Contact object into the AddressBook object. To test out that code, use the following statements:
Contact contact1 = new Contact();
contact1.ID = 12;
contact1.FirstName = 'Wei-Meng';
contact1.LastName = 'Lee';
contact1.Email = '[email protected]';
AddressBook addBook1 = new AddressBook();
contact1.AddToAddressBook(addBook1);
Properties are function members that provide an easy way to read or write the values of private data members. Recall the Contact class defined earlier:
public class Contact {
public int ID;
public string FirstName;
public string LastName;
public string Email;
}
You've seen that you can create a Contact object and set its public data members (ID, FirstName, LastName, and Email) directly, like this:
Contact c = new Contact();
c.ID = 1234;
c.FirstName = 'Wei-Meng';
c.LastName = 'Lee';
c.Email = '[email protected]';
However, if the ID of a person has a valid range of values — such as from 1 to 9999 — the following value of 12345 would still be assigned to the ID data member:
c.ID = 12345;
Technically, the assignment is valid, but logically it should not be allowed — the number assigned is beyond the range of values permitted for ID. Of course you can perform some checks before assigning a value to the ID member, but doing so violates the spirit of encapsulation in object- oriented programming — the checks should be done within the class.
A solution to this is to use properties.
The Contact class can be rewritten as follows with its data members converted to properties:
public class Contact {
int _ID;
string _FirstName, _LastName, _Email;
}
Note that the public members (ID, FirstName, LastName, and Email) have been replaced by properties with the set and get accessors.
The set accessor sets the value of a property. Using this example, you can instantiate a Contact class and then set the value of the ID property, like this:
Contact c = new Contact();
c.ID = 1234;
In this case, the set accessor is invoked:
public int ID {
get {
return _ID;
