Что это за синтаксис в передаче параметра - “new object[] {s}”

298
31 января 2017, 19:36
string s= bbb.EndInvoke(ar);
BeginInvoke(new MyDelegat(PrintThat), new object[] {s});

Интересует - ,new object[] {s})
Почему s в фигурных скобках?

Answer 1

В этом выражении

new object[] {s}

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

BeginInvoke( new MyDelegat(PrintThat), new object[] {s} );

Это более наглядно видно из объявлений массивов. Например,

string s = "Hello";
object[] a = new object[] { s };
object[] a1 = new object[1] { s };
object[] a2 = { s };

Или такое объявление массива и вывод его элементов на консоль

object[] a = new object[] { "Hello", "World" };
Console.WriteLine("{0}, {1}!", a[0], a[1]);

В этом случае будет создан массив с двумя элементами по числу инициализаторов.

Для полноты картины можете выполнить следующий фрагмент кода

string s = "Hello";
Console.WriteLine(new object[] { s }[0]);

На консоль будет выведена строка "Hello".

READ ALSO
simplexml_load_file тире и массив

simplexml_load_file тире и массив

Интересная ситуация получаетсяИспользую simplexml_load_file

312
не могу удалить индекс mysql

не могу удалить индекс mysql

здравствуйте, не могу удалить индекс столбца из бд

462
Отправка с формы в 2 столбца? [требует правки]

Отправка с формы в 2 столбца? [требует правки]

Здравствуйте, как реализовать такое:

281
php - Ответ на GET запрос

php - Ответ на GET запрос

Только - только начинаю разбираться в phpДопустить мне надо передать на скрипт параметр

401