Object Initializers allow you to instantiate an object and assign values to its properties in one line of code.
The example below uses object initializers to set the FirstName and LastName property of the Person object
USING System
USING System.Collections.Generic
USING System.Linq
USING System.Text
FUNCTION Start() AS VOID
LOCAL oList AS List<Int>
// The next line creates the collection and adds 5 elements
// Note the double curly braces:
// The first pair calls the default constructor of the List<> Class
// The second pair of curly braces surrounds the list of values
Console.WriteLine("Collection Initializers")
oList := List<Int>{} {1,2,3,4,5}
FOREACH VAR i IN oLIst
Console.WriteLine(i)
NEXT
VAR oCompass := List<String>{}{"North", "East", "South", "West"}
FOREACH VAR sDirection in oCompass
Console.WriteLine(sDirection)
NEXT
Console.ReadLine()
// Now an example of an Object Initializer
// Note that the object has no constructor
// We are assigning the values directly to the properties
// This will only work if there are public properties
// Again there are double curly braces:
// The first pair calls the default constructor of the Person class
// The second pair of curly braces surrounds the list of name-value pairs
Console.WriteLine("Object Initializer")
VAR oPerson := Person{}{FirstName := "John", LastName := "Smith"}
? oPerson:Name
Console.ReadLine()
// Combine the two
Var oPeople := List<Person> {} {;
Person{}{FirstName := "John", LastName := "Smith"}, ;
Person{}{FirstName := "Jane", LastName := "Doe"} ;
}
Console.WriteLine("Collection and Object Initializers")
FOREACH var oP in oPeople
Console.WriteLine(oP:Name)
NEXT
Console.ReadLine()
RETURN
PUBLIC CLASS Person
PROPERTY FirstName AS STRING AUTO
PROPERTY LastName AS STRING AUTO
PROPERTY Name AS STRING GET FirstName+" "+LastName
END CLASS