Any accessible fields or properties of an object can be set via an object initializer directly after construction.
For example, consider the following class:
public class Person {
public string Name;
public bool IsWorking;
public bool HasChild;
//from ww w . j av a 2 s .c o m
public Person () {}
public Person (string n) {
Name = n;
}
}
Using object initializers, you can instantiate Person objects as follows:
// Note parameterless constructors can omit empty parentheses
Person b1 = new Person { Name="Jack", IsWorking=true, HasChild=false };
Person b2 = new Person ("Jack") { IsWorking=true, HasChild=false };
We can make Person's constructor accept optional parameters:
public Person (string name, bool IsWorking = false, bool HasChild = false) {
Name = name;
IsWorking = IsWorking;
HasChild = HasChild;
}
This would allow us to construct a Person as follows:
Person b1 = new Person (name: "Jack", IsWorking: true);