paramsParametre değiştirici arayanlar için bir yönteme birden fazla argüman geçmesi için bir kısayol sözdizimi sağlar. paramsParametreli bir yöntemi çağırmanın iki yolu vardır :
1) Parametre türünde bir dizi ile çağrı yapmak, bu durumda paramsanahtar kelimenin hiçbir etkisi olmaz ve dizi doğrudan yönteme iletilir:
object[] array = new[] { "1", "2" };
// Foo receives the 'array' argument directly.
Foo( array );
2) Veya, genişletilmiş bir argüman listesiyle arama, bu durumda derleyici argüman listesini otomatik olarak geçici bir diziye sarar ve bunu yönteme iletir:
// Foo receives a temporary array containing the list of arguments.
Foo( "1", "2" );
// This is equivalent to:
object[] temp = new[] { "1", "2" );
Foo( temp );
Bir nesne dizisini " params object[]" parametresine sahip bir yönteme geçirmek için şunlardan birini yapabilirsiniz:
1) Manuel olarak bir sarmalayıcı dizisi oluşturun ve bunu lassevk'te belirtildiği gibi doğrudan yönteme iletin :
Foo( new object[] { array } ); // Equivalent to calling convention 1.
2) Veya, argümanı Adamobject tarafından belirtildiği gibi atayın , bu durumda derleyici sizin için sarmalayıcı diziyi oluşturacaktır:
Foo( (object)array ); // Equivalent to calling convention 2.
Ancak, yöntemin amacı birden çok nesne dizisini işlemekse, bunu açık bir " params object[][]" parametresiyle bildirmek daha kolay olabilir . Bu, birden çok diziyi bağımsız değişken olarak geçirmenize izin verir:
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 );
Düzenleme: Raymond Chen, bu davranışı ve yeni bir gönderide C # spesifikasyonuyla nasıl ilişkili olduğunu açıklıyor .