Matriz de parâmetros e reticências
Precedência da matriz para a resolução de chamadas de função sobrecarregada param mudou de gerenciado Extensions para C++ para Visual C++ 2008.
Em gerenciado extensões e a nova sintaxe, há nenhum suporte explícito para o parâmetro de matriz que translation from VPE for Csharp e Visual Basic suporte. Em vez disso, um sinaliza uma matriz com um atributo comum da seguinte maneira:
void Trace1( String* format, [ParamArray]Object* args[] );
void Trace2( String* format, Object* args[] );
Enquanto esses ambos parecem iguais, a ParamArray atributo Rótulos isso para translation from VPE for Csharp ou outras linguagens do CLR sistema autônomo uma matriz levando um número variável de elementos com cada chamada. A alterar no comportamento em programas entre extensões gerenciadas e a nova sintaxe está a resolução de uma função sobrecarregada definida no qual uma instância declara uma elipse e um segundo declara um ParamArray atributo, sistema autônomo no exemplo a seguir fornecido pelo Artur Laksberg.
int foo(...); // 1
int foo( [ParamArray] Int32[] ); // 2
gerenciado Extensions nas reticências recebeu o precedência sobre o atributo que é razoável, pois o atributo não é um aspecto formal do linguagem.No entanto, na sintaxe do novo array param agora tem suporte diretamente com o linguagem e recebe precedência sobre as reticências porque ele tem mais rigidez de tipos.Assim, nas extensões gerenciado, a telefonar
foo( 1, 2 );
resolve para foo(…) enquanto na sintaxe de novo, resolve para o ParamArray instância. Sobre a chance de fora o comportamento do programa depende a invocação da instância reticências sobre o que o ParamArray, você precisará modificar a assinatura ou a telefonar.