[ cure126 @ 02.05.2016. 20:52 ] @
Imam jedan početnički problem.

Imam strukturu SomeStruct koja ima parametar Param i metodu Update koja menja vrednosti tog parametra svaki put kada se pozove.
Takođe imam HistoryList koja je List<SomeStruct> i u koju sa add dodajem mySomeStruct (tipa SomeStruct) svaki put kad ga apdejtujem sa Update. Na kraju kad se napravi lista, ispostavi se da svaki element liste HistoryList ima istu vrednost Param parametra. Probao sam čak i sa Copy constructor metodom u SomeStruct i ne vredi, uvek budu svi param isti. Takođe sam proverio sa Debug u toku rada, Param se menja ali na kraju kad se napravi lista, svi elementi imaju vrednost poslednjeg apdejtovanog parametra.
Šta mi je činiti da zapamtim sve my SomeStruct kao posebne objekte u listi?

Svaki put kreiranje novog mySomeStruct objekta ne dolazi u obzir jer Update zavisi od prethodnog stanja.
[ dusans @ 02.05.2016. 21:00 ] @
Postavi kod ovde, nešto radiš veoma pogrešno...

Citat:

Svaki put kreiranje novog mySomeStruct objekta ne dolazi u obzir jer Update zavisi od prethodnog stanja.

Naravno da dolazi u obzir, samo nam pojasni zavisnost od prethodnog stanja...
[ cure126 @ 02.05.2016. 21:07 ] @
Metod klase u kome se koristi struktura WeightsCollection

Code:

 private WeightsCollection myWeights;
 private List<WeightsCollection> weightsHistory;

 public List<double> CalculateResult(int noOfCicles)
        {
            List<double> result = new List<double>();

            double y;
            List<double> rowValues = myData.GetRandomRow(out y);
            weightsHistory.Clear();
            for (int i = 0; i < noOfCicles; i++)
            {
                double hw = CalculateHw(CalculateZ(myWeights, rowValues));
                rowValues = myData.GetRandomRow(out y);
                myWeights.UpdateWeights(rowValues,hw,y,alpha);
                weightsHistory.Add(new WeightsCollection(myWeights));
            //    Debug.WriteLine(i .ToString() + ". myWeights = " + myWeights.Weights[0].ToString() + " => " + weightsHistory[i].Weights[0].ToString());
            }

            result = myWeights.Weights;

            return result;
        }


Struktura WeightsCollection
Code:

public class WeightsCollection
    {
        private List<double> weights;

        public List<double> Weights
        {
            get { return weights; }
        }
        public WeightsCollection(WeightsCollection copyWeights)
        {
            weights = copyWeights.weights;
        }

        public void UpdateWeights(List <double> inX, double hw, double y, double alpha)
        {
              // neka kalkulacija koja menja vrednosti weights
        }
}
[ cure126 @ 02.05.2016. 21:09 ] @
E da, u pitanju je klasa, ne struktura, pobrkao sam sa nečim drugim u kodu, a kasno je... :)
[ dusans @ 02.05.2016. 21:12 ] @
Pa vidim da si pobrkao, velika razlika... :)
A i onaj copy construktor nije dobar jer ne pravi kopiju...
[ cure126 @ 02.05.2016. 21:16 ] @
Da li on i listu samo dodaje referencu na jedan te isti objekat? Tako je možda bilo pre nego što sam dodao copy constructor. Prvo sam napisao
Code:

weightsHistory.Add(myWeights);

Možda sam trebao sa copy constructorom al kako onda da ga napišem?
[ dusans @ 02.05.2016. 21:19 ] @
Na brzaka:
Code:

public WeightsCollection(WeightsCollection copyWeights)
{
    weights = new List<double>(copyWeights.weights);
}
[ cure126 @ 02.05.2016. 21:23 ] @
To je to! Sad su svi različiti! Dođem ti pivo! :)