Non riesco a capire la logica dietro List<int>
in quanto infrange alcune delle regole di base.Elenco <int> in C#
List<int>
deve essere di tipo valore e non di tipo di riferimento.
List<int>
deve essere passato perref
parola chiave se il suo valore è di essere mantenuta tra chiamate di funzione. Questo significa che sta visualizzando un comportamento di tipo value simile a int.- Ma il
List<int>
deve essere inizializzato da un nuovo operatore. AncheList<int>
potrebbe essere nullo pure. Ciò implica un comportamento di tipo di riferimento.
Un tipo nullable è diverso in quanto non deve essere inizializzato dal nuovo operatore.
Sto vedendo qualcosa di sbagliato qui?
EDITED-
, avrei postato il codice nella domanda iniziale stesso. Ma segue qui -
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ListTest d = new ListTest();
d.Test();
}
}
class ListTest
{
public void ModifyIt(List<int> l)
{
l = returnList();
}
public void Test()
{
List<int> listIsARefType = new List<int>();
ModifyIt(listIsARefType);
Console.WriteLine(listIsARefType.Count); // should have been 1 but is 0
Console.ReadKey(true);
}
public List<int> returnList()
{
List<int> t = new List<int>();
t.Add(1);
return t;
}
}
}
Che cosa intendi esattamente con il tuo punto 1? Puoi dare un esempio perché pensi di aver bisogno di 'ref'? –
@ 0xA3 => crea un metodo1 che utilizza come parametro l'elenco. Quindi nel metodo principale passare il metodo1 a Elenco . Nel metodo1 aggiungi alcuni numeri interi alla lista. Nel metodo principale vedi se riesci a recuperare questi numeri interi. –
Prashant
mattmc3 ha già pubblicato un esempio come quello che dimostra che non è necessario 'ref'. –