Sono ancora nuovo in C# e sono stato alle prese con vari problemi sugli array. Ho una serie di oggetti di metadati (coppie valore nomi) e vorrei sapere come creare solo il numero di oggetti "InputProperty" di cui ho veramente bisogno. In questo ciclo ho arbitrariamente impostato il numero di elementi su 20 e provo a eseguire il salvataggio quando la voce diventa nullo ma il servizio web sul lato ricevente di questo non gli piace alcun elemento nullo passato ad esso:Come impostare la lunghezza dell'array in C# dinamicamente
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;
}
In sintesi, dire che ho solo 3 coppie di punti di chiamata nell'array di input sopra riportato? Piuttosto che allocare 20 elementi per l'array chiamato ip, come è possibile codificarlo, così l'IP è tanto grande quanto deve essere. L'oggetto di aggiornamento viene passato attraverso un altro webservice, quindi la serializzazione è importante (ad esempio, non posso usare namevaluecollection, ecc.).
p.s. L'unico modo per dare seguito a una domanda postata tramite la funzione "aggiungi commenti"?
penso che ti manca il problema qui - l'array di input, nvPairs, contiene valori nulli dopo quelli utili. Usare semplicemente la sua lunghezza non risolverà nulla. – Whatsit
L'OP non lo ha mai specificato. Ho appena pensato che il nulla fosse un semplice controllo di sanità mentale. Se quello che stai dicendo è in realtà il caso, allora hai ragione. La lista sarebbe sicuramente la strada da percorrere. – BFree
Hmm non ho pensato che potesse essere un controllo di sanità mentale. Questo è certamente possibile. – Whatsit