Compartilhar via


Matriz de param e reticências

Precedência da matriz para a resolução de chamadas de função sobrecarregada param foi alterado a partir de Managed Extensions for C++ para Visual C++ 2010.

Extensões gerenciadas e a nova sintaxe, há não há suporte explícito para o parâmetro de matriz C# e Visual Basic suporte. Em vez disso, um sinaliza uma matriz comum com um atributo, como segue:

void Trace1( String* format, [ParamArray]Object* args[] );
void Trace2( String* format, Object* args[] );

Embora ambos a mesma aparência, o ParamArray atributo marcas isso para C# ou outras linguagens do CLR como uma matriz, levando a 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 é na resolução de uma função sobrecarregada definida no qual uma instância declara uma elipse e um segundo declara um ParamArray atributo, como no exemplo a seguir fornecido por Artur Laksberg.

int fx(...); // 1
int fx( [ParamArray] Int32[] ); // 2

Extensões gerenciadas, as reticências recebeu precedência sobre o atributo que é razoável, pois o atributo não é um aspecto formal da linguagem. Entretanto, a nova sintaxe, agora há suporte para a matriz param diretamente no idioma, e ele tem precedência sobre as reticências porque ele tem mais rigidez de tipos. Portanto, no Managed Extensions, a chamada

fx( 1, 2 );

resolve para fx(…) enquanto estiver na nova sintaxe, resolve para o ParamArray instância. Sobre a chance de desativado, o comportamento do seu programa depende a invocação da instância reticências através do ParamArray, você precisará modificar a assinatura ou a chamada.

Consulte também

Conceitos

Alterações de linguagem geral