Object initializers with nullable types 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Object initializers with nullable types



It is a compile-time error to use a collection initializer with a nullable struct.

Collection Initializers

Collection initializers let you specify one or more element intializers when you initialize a collection class that implements IEnumerable. The element initializers can be a simple value, an expression or an object initializer. By using 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.

The following examples shows two simple collection initializers:

List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List<int> digits2 = new List<int> { 0 + 1, 12 % 3, MakeInt() };

The following collection initializer uses object initializers to initialize objects of the Cat class defined in an earlier example. Note that the individual object initializers are enclosed in braces and separated by commas.

List<Cat> cats = new List<Cat> { new Cat(){ Name="Sylvester", Age=8 }, new Cat(){ Name="Whiskers", Age=2}, new Cat() { Name="Sasha", Age=14} };

You can specify null as an element in a collection initializer if the collection's Add method allows it.

List<Cat> moreCats = new List<Cat> { new Cat(){ Name="Furrytail", Age=5 }, new Cat(){ Name="Peaches", Age=4}, null };

 


Инициализаторы объектов и типы, допускающие значение NULL

При попытке применить инициализатор коллекций к структуре, допускающей значение NULL, произойдет ошибка компиляции.

Инициализаторы коллекций

Инициализаторы коллекций позволяют задавать один или несколько инициализаторов элементов при инициализации коллекции, реализующей интерфейс IEnumerable. В качестве инициализаторов элементов могут выступать обычные значения, выражения или инициализаторы объектов. С помощью инициализатора коллекций можно включить в код несколько вызовов метода Add класса; компилятор добавит эти вызовы.

Ниже показаны два примера простых инициализаторов коллекций.

List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List<int> digits2 = new List<int> { 0 + 1, 12 % 3, MakeInt() };

В следующем инициализаторе коллекций используются инициализаторы объектов класса Cat, определенного ранее в этом примере. Обратите внимание, что инициализаторы отдельных объектов заключены в скобки и разделены запятыми.

ß---

В качестве одного из элементов инициализатора коллекций можно указать значение null, если метод Add коллекции допускает это.

List<Cat> moreCats = new List<Cat> { new Cat(){ Name="Furrytail", Age=5 }, new Cat(){ Name="Peaches", Age=4}, null };

 


How to: Initialize Objects without Calling a Constructor

You can use object initializers to initialize type objects in a declarative manner without having to invoke the type's constructor.

The following examples show how to use object initializers with named objects. Anonymous types must be declared with an object initializer.

Example

The following example shows how to initialize a single new StudentName type by using an object initializer.

StudentName student = new StudentName { FirstName = "Craig", LastName = "Playstead", ID = 116 };

The following example shows how to initialize a collection of StudentName types by using a collection initializer. Note that a collection initializer is a series of comma-separated object initializers.

List<StudentName> students = new List<StudentName>() { new StudentName {FirstName="Craig", LastName="Playstead", ID=116}, new StudentName {FirstName="Shu", LastName="Ito", ID=112, }, new StudentName {FirstName="Stefan", LastName="Rißling", ID=113, }, new StudentName {FirstName="Rajesh", LastName="Rotti", ID=114, } };

Compiling the Code

To run this code, copy and paste the class into a Visual C# console application project that has been created in Visual Studio. By default, this project targets version 3.5 of the.NET Framework, and it has a reference to System.Core.dll and a using directive for System.Linq. If one or more of these requirements are missing from the project, you can add them manually.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 115; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.21.233.41 (0.004 с.)