2015-05-04 3 views
0

Я изучаю книгу с членством тему в ASP.NET MVC, и я нашел синтаксис, я не могу проследить (и не объяснено в книге), которая:Что означает новый синтаксис [] {string}?

new[] {"string"} 

как в:

Roles.AddUsersToRoles(new[] {userName}, new[] {roleName}); 

В MDSN-библиотеке я вижу, что метод Roles.AddUsersToRoles принимает в качестве аргументов два строковых массива, вероятно, это сокращение или это может иметь некоторые дополнительные функции?

+2

В [параметры] (https://msdn.microsoft.com/en-us/library/system.web .security.roles.adduserstoroles (v = vs.110) .aspx) не являются строками - это массивы строк. –

+1

'new {userName}' Предположительно это опечатка для 'new [] {userName}'? – Blorgbeard

+0

да, это была опечатка, спасибо Blorgbeard и Grant Winney - тоже правое редактирование, огромное спасибо. – Turo

ответ

8

Это Implicitly Typed Arrays синтаксис.

Вы можете создать неявно типизированный массив, в котором тип экземпляра массива выводится из элементов, указанных в массиве инициализаторе.

Этот

string[] stringArray = new[] {"string"}; 

такой же, как:

string[] stringArray = new string[] {"string"}; 

Другое дело отметить, метод Roles.AddUsersToRoles принимает два параметра типа массива строк (а не строки).

public static void AddUsersToRoles(
    string[] usernames, 
    string[] roleNames 
) 
+0

ОК, большое спасибо Хабиб, скоро примут ваш ответ :) – Turo

+2

@mason: сделано, спасибо за то, что вы хороший гражданин. –

2
new string[1] { "string" } 

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

new string[ ] { "string" } 

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

new  [ ] { "string" } 

Но делать не получить эту смесь с инициализаторами для anonymous types. Они не имеют угловые скобки [] после new:

new { StringProperty = "string" } 

или:

// string StringProperty; 
new { StringProperty } 
Смежные вопросы