Come consumare un metodo che restituisce un sistema 2D.array (non string [,]) in C#?
-
13-11-2019 - |
Domanda
Sto usando una riga come questa:
Array stringArray = Array.CreateInstance(typeof(String), 2, 2);
per consumare un metodo che restituisce un sistema 2D.array con il mio StringArray variabile. Tuttavia StringArray = myClassInstance.work (..., ... ...); non è riempito con l'array di ritorno di quella funzione.
Come dovrei definire la mia variabile di raccolta in modo che possa essere assegnata al valore di ritorno di un metodo che restituisce un valore di array di stringa 2D?
Grazie
Soluzione
Array.CreateInstance
Restituisce un Array
, senza la sua dimensione e lunghezza specificata (ma comunque è un System.Array
che è la classe base di tutti gli array in C#). Nella maggior parte dei casi un array di ritorno da un metodo è più simile:
public string[] MyMethod()
{
}
public int[,] Another(int something)
{
}
string[] theStringResult = MyMethod();
int[,] theIntResult = Another(1);
Altri suggerimenti
Sul tuo array 2D:
Array.CreateInstance(typeof(String), 2, 2);
Questo restituisce a string[,]
cast a Array
. È identico a (Array)(new string[2,2])
. Quindi puoi lanciarlo a string[,]
se vuoi.
Ma perché vuoi usarlo comunque? Non puoi semplicemente usare un string[,]
invece? Non sai che il tipo di elemento è string
al tempo di compilazione? Forse fare in un parametro generico.
Sul tuo problema eccessivo:
Tuttavia StringArray = myClassInstance.work (..., ... ...); non è riempito con l'array di ritorno di quella funzione.
Non possiamo aiutarti con quella parte del problema a meno che non pubblichi il codice dove accade. Sembra che myclassinstance.work non restituisca l'istanza dell'array che hai creato. Ma a meno che tu non mostri il codice con il bug, non posso dirti dov'è.