C# przenoszenie obiektu list miedzy skryptami


#1

Witam,

Mam klase faktura:

[Serializable]
public class faktura
{
    public float kwota;
    public int czas;
    public char typ;
    public int nr;
    public List<string> listaSprzedanychT;
}

inna klasa zarzFak zarządza mi fakturami(zapisuje, wczytuje i przetwarza), faktura jest zadeklarowana jako fak
Z innego skryptu dodaje sobie nową fakture:

zarzFak.fak.Add(new faktura { czas = xxl, kwota =xxx, listaSprzedanychT = lista, typ = 's', nr = xxxx });

I wszystko działa poprawnie, dane się przenoszą za wyjątkiem listy. Obserwując na debugerze przy dodawaniu ‘lista’ zawiera pozycje, ale w skrypcie fak juz jest pusta. Nie ma żadnych błędów.

Z czego może to wynikać?


#3

ok to tak:
pamietaj ze lista jest przesylana przez referencje a nie wartosc. (unity przesyla non-primitive types automatycznie jako referencje).

Czyli do listy w klasie faktura dodales jakby wskaznik do miejsca w pamieci listy ktora przesylasz. Po przeslaniu jezeli wyczyscisz/zmienisz liste ktora przeslales do konstruktora to lista w klasie faktura tez sie zmieni, mzoesz to sprawdzic malym testem: zrob jakas liste dodaj kilka pozycji -> przeslij do konstruktora -> dodaj kolejne pozycje i zobacz jaka masz liste w klasie z konstruktorem (bedzie miala wysztkie pozycje nawet te dodane po utworzeniu klasy).

musisz dodac liste np w ten sposob:
f = new faktura { czas = 12, kwota = 12, listaSprzedanychT = new List(lista), typ = ‘s’, nr = 12 };