Как передать один объект [] объекту params []

Модификатор параметра params дает arrays вызывающей стороне сокращенный csharp синтаксис для передачи нескольких javascript-array аргументов в метод. Есть array два способа вызвать метод visual-c# с параметром params:

1) Вызов с массивом c#-language типа параметра, в этом случае arrays ключевое слово params не действует javascript-array и массив передается напрямую c# в метод:

object[] array = new[] { "1", "2" };

// Foo receives the 'array' argument directly.
Foo( array );

2) Или вызов с расширенным bytearray списком аргументов, и в этом csharp случае компилятор автоматически string-array поместит список аргументов c#-language во временный массив и передаст c#-language его методу:

// Foo receives a temporary array containing the list of arguments.
Foo( "1", "2" );

// This is equivalent to:
object[] temp = new[] { "1", "2" );
Foo( temp );


Чтобы передать javascript-array массив объектов в метод с javascript-array параметром "params object[]", вы string-array можете:

1) Создайте массив-оболочку .cs-file вручную и передайте его непосредственно array методу, как указано lassevk:

Foo( new object[] { array } );  // Equivalent to calling convention 1.

2) Или swift-array приведите аргумент к object, как c# указано в Adam, и в этом случае c#.net компилятор создаст для вас c#.net массив-оболочку:

Foo( (object)array );  // Equivalent to calling convention 2.


Однако, если array целью метода является обработка static-array нескольких массивов объектов, может .cs-file быть проще объявить его с .cs-file явным параметром "params object[][]". Это static-array позволит вам передавать несколько character-arrays массивов в качестве аргументов:

void Foo( params object[][] arrays ) {
  foreach( object[] array in arrays ) {
    // process array
  }
}

...
Foo( new[] { "1", "2" }, new[] { "3", "4" } );

// Equivalent to:
object[][] arrays = new[] {
  new[] { "1", "2" },
  new[] { "3", "4" }
};
Foo( arrays );

Изменить: Рэймонд csharp Чен описывает это поведение array и его связь со спецификацией csharp C# в a new post.

c#

arrays

2022-08-05T08:54:20+00:00