Matriz de parâmetros e reticências
A precedência da matriz de parâmetro para resolver chamadas de função sobrecarregadas foi alterada de extensões gerenciadas para C++ a Visual C++.
Extensões gerenciadas em e na nova sintaxe, não há suporte explícito para a matriz de que param C# e Visual Basic oferecem suporte a. Em vez disso, um dos sinalizadores uma matriz comum com um atributo, como segue:
void Trace1( String* format, [ParamArray]Object* args[] );
void Trace2( String* format, Object* args[] );
Quando esses dois olha o mesmo, o atributo de ParamArray rótulo para esse C# ou outros idiomas de CLR como uma matriz que usa um número variável de elementos com cada invocação. A alteração no comportamento em programas entre extensões gerenciadas e a nova sintaxe está na resolução de um conjunto sobrecarregado da função no qual a instância declare as reticências e um segundo declara um atributo de ParamArray , como no exemplo fornecido por Artur Laksberg.
int fx(...); // 1
int fx( [ParamArray] Int32[] ); // 2
Em extensões gerenciadas, as reticências foram atribuídas precedência sobre o atributo que é razoável desde que o atributo não é um aspecto formal do idioma. No entanto, na nova sintaxe, a matriz de parâmetro agora tem suporte diretamente no idioma e, terá precedência sobre as reticências porque é mais fortemente tipada. Assim, em extensões gerenciadas, a chamada
fx( 1, 2 );
resolver a fx(…) quando na nova sintaxe, ele resolve a ParamArray a instância do. Fora na possibilidade de seu comportamento do programa depende da invocação da instância de reticências sobre a de ParamArray, você precisará modificar a assinatura ou chame.