Object
Initializers
Object
initializers facilitates assignment of values to any accessible
fields or properties of an object at creation time, without having to
explicitly invoke a constructor.
Object
initializers with named types
In
this example, we use auto-implemented properties to define a class.
public class Point { public int iXPoint { get; set; } public int iYPoint { get; set; } }
During instantiation of
the objects of the Point class, we can use:
Point oPoint = new Point(); oPoint.iXPoint = 0; oPoint.iYPoint = 1;
Given below is a shorter technique to implement the above declaration and assignments:
// {iXPoint = 0, iYPoint = 1} is field or property assignments Point oPoint = new Point { iXPoint = 0, iYPoint = 1 };
In LINQ, we can use named
object initializer as given below:
The
following example shows the technique to use named object initializer
with LINQ. The example below assumes that an object contains many
fields and methods related to a product, but we are only interested
in creating a sequence of objects that contain the product name and
the unit price.
var productInfos = from p in products select new { ProductName = p.ProductName, UnitPrice = p.UnitPrice };
Collection
Initializers
Collection
Initializers are similar in concept to Object Initializers and allows
you to create and initialize a collection in a single step. During
implementation of a collection initializer, you do not have to
specify multiple calls to the Add method of the class in your source
code; the compiler adds the calls by itself.
List<int> numbers = new List<int> { 1, 100, 100 };
In fact, it is the short
form of the following:
List<int> numbers = new List<int>(); numbers.Add(1); numbers.Add(10); numbers.Add(100);
Note: To be able
to use a Collection Initializer on an object, the object must satisfy
these two requirements:
- It must have a public Add() method.
No comments:
Post a Comment