What is an Object Initializer in C#? Object initializers are the easiest way to assign values of an object’s properties and fields. An object can be initialized without explicitly calling a class’s constructor. In other words, object initializers allow you to assign values to the fields or properties at the time of creating an object without invoking a constructor. We have another post at BCN called C# Collection Initializer Syntax.
C# 3.0 (.NET 3.5) introduced Object Initializer Syntax, a new way to initialize an object of a class or collection.
Here is our C# console program.
using System;
namespace ObjectInitializerSyntax
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int AgeInYears { get; set; }
public int Number { get; set; }
public Person() // default constructor
{
Id = 1;
Name = "Sally";
AgeInYears = 1;
// Number is not initialized here
}
}
class Program
{
static void Main(string[] args)
{
// NOT using object initializer syntax here
Person p = new Person();
p.Id = 1;
p.Name = "Bob";
// p.AgeInYears is not set, so the constructor value is used.
// p.Number is not set, not set in constructor, so default value of zero
Person p2 = new Person(); // constructor sets all values except Number, which gets 0
Person p3 = new Person
{ // object initializer syntax:
Id = 3,
Name = "John",
AgeInYears = 33,
Number = 333
};
Person p4 = new Person
{ // object initializer syntax:
Id = 4,
Name = "Forth"
// you do not have to initialize all properties.
// the constructor still sets AgeInYears to 1
};
Console.WriteLine("Hi {0}! You are {1} years old. Number: {2}", p.Name, p.AgeInYears, p.Number);
Console.WriteLine("Hi {0}! You are {1} years old. Number: {2}", p2.Name, p2.AgeInYears, p2.Number);
Console.WriteLine("Hi {0}! You are {1} years old. Number: {2}", p3.Name, p3.AgeInYears, p3.Number);
Console.WriteLine("Hi {0}! You are {1} years old. Number: {2}", p4.Name, p4.AgeInYears, p4.Number);
}
}
}
Here is the output.
Hi Bob! You are 1 years old. Number: 0 Hi Sally! You are 1 years old. Number: 0 Hi John! You are 33 years old. Number: 333 Hi Forth! You are 1 years old. Number: 0 Press any key to continue . . .