2014-12-22 2 views
0

Существует код, где это читает что-то из XML и загружает его в словарь. Pls найдет код ниже. Мне нужно понять, что делает new [] {header}.Что означает новый []

что такое new [] здесь. Спасибо.

var headers = _doc.GetElementsByTagName("Header"); 
var header = headers[0]; 

_dict.Add("Header_" + headerId, new [] {header}); 
+12

http://msdn.microsoft.com/en-us/library/bb384090.aspx – Dennis

+1

Релевантно: [Все возможные синтаксисы инициализации массива C#] (http://stackoverflow.com/questions/5678216/all-possible- c-sharp-array-initialization-syntaxes) –

+0

большое спасибо за ваш быстрый ответ – Jayaraman

ответ

7

Это implicitly typed array creation expression - это позволяет компилятору определить тип массива, немного, как с помощью var, но для массивов. Так что в вашем случае, это эквивалентно:

_dict.Add("Header_" + headerId, new XmlNode[] { header }); 

Он был добавлен в C# 3 вместе с var для поддержки анонимных типов. Например, вы можете написать:

var people = new[] 
{ 
    new { Name = "Jon", Home = "Reading" }, 
    new { Name = "Gareth", Home = "Cambridge" }  
}; 

Вы не могли бы написать, что, как явно напечатал выражение создания массива, так как тип элементов массива не имеет имени.

2

Он добавляет новый массив с содержимым заголовка.

1

Это просто для создания нового массива. Так как вы используете коллекцию инициализатору, компилятор знает тип из headers[0]

+0

большое спасибо за ваш быстрый ответ – Jayaraman

1

Вы назначаете новый массив. Компилятор решает какой тип.

+0

большое спасибо за ваш быстрый ответ – Jayaraman

1

новый [] {header} просто создает новый экземпляр массива. Тип элементов, которые собирается хранить, - это тип объекта заголовка. Нет необходимости определять, например: new string [] {"some string"}, для создания экземпляра массива типа String достаточно простого нового [] {"some string"}.

+0

большое спасибо за ваш быстрый ответ – Jayaraman