Como definir o comprimento da matriz em c # dinamicamente

Ainda sou novo em C # e tenho lutado com vários problemas em matrizes. Eu tenho uma matriz de objetos de metadados (pares de nome e valor) e gostaria de saber como criar apenas o número de objetos "InputProperty" de que realmente preciso. Nesse loop, arbitrariamente, configurei o número de elementos para 20 e tento resgatar quando a entrada se torna nula, mas o serviço da Web no final de recebimento não gosta de nenhum elemento nulo passado para ela:

private Update BuildMetaData(MetaData[] nvPairs)
{
    Update update = new Update();
    InputProperty[] ip = new InputProperty[20];  // how to make this "dynamic"
    int i;
    for (i = 0; i < nvPairs.Length; i++)
    {
        if (nvPairs[i] == null) break;
        ip[i] = new InputProperty();
        ip[i].Name = "udf:" + nvPairs[i].Name;
        ip[i].Val = nvPairs[i].Value;
    }
    update.Items = ip;
    return update;
}

Em resumo, digamos que eu tenho apenas 3 pares de valores de nomes na matriz de entrada acima? Em vez de alocar 20 elementos para o array chamado ip, como codificar isso para que o ip seja tão grande quanto for necessário. O objeto de atualização é passado por outro serviço da Web, portanto, a serialização é importante (ou seja, não posso usar namevaluecollection etc.

p.s. É a única maneira de acompanhar uma pergunta postada através do recurso "adicionar comentários"?

questionAnswers(9)

yourAnswerToTheQuestion