Compartilhar via


Matriz param e reticências

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

Extensões gerenciadas e a nova sintaxe há nenhum suporte explícito para o parâmetro de matriz que C# e Visual Basic suporte.Em vez disso, um sinalizadores 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 de cada chamada.A alteração no comportamento em programas entre gerenciado extensões e a nova sintaxe é na resolução de uma função sobrecarregada definir em qual 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

Managed Extensions reticências recebeu precedência sobre o atributo que é razoável, já que o atributo não é um aspecto formal da linguagem.No entanto, a nova sintaxe matriz param agora é suportado diretamente dentro do 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(…) na nova sintaxe resolve para o ParamArray instância.Sobre a chance de fora o comportamento do programa depende da 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 gerais em linguagens (C++/CLI)