Deep-cloning example:
public class RechivHafrasha : IEqualityComparer<RechivHafrasha>
{
public decimal Schum { get; set; }
public decimal? Shiur { get; set; }
//public int? Status { get; private set; }
public int Sug { get; set; }
public decimal Sachar { get; private set; }
public string MisparMezaheReshuma { get; set; }
public string MisparMezaheReshumaKodem { get; set; }
public RechivHafrasha()
{
}
public RechivHafrasha(decimal schumHafrasha, decimal? shiurHafrasha, /*int? status,*/ int sugHafrasha, decimal sachar, string misparMezaheReshuma, string misparMezaheReshumaKodem)
{
Schum = schumHafrasha;
Shiur = shiurHafrasha;
//Status = status;
Sug = sugHafrasha;
Sachar = sachar;
MisparMezaheReshuma = misparMezaheReshuma;
MisparMezaheReshumaKodem = misparMezaheReshumaKodem;
}
/*
* לצורך השוואת בין רשומות מאוחדות, כדי לא לשלוח כפילויות לפירעון
*/
public string ID
{
get
{
return string.Format("{0}{1}{2}{3}{4}{5}",
this.Schum,
this.Shiur,
this.Sug,
this.Sachar,
this.MisparMezaheReshuma,
this.MisparMezaheReshumaKodem);
}
}
public bool Equals(RechivHafrasha x, RechivHafrasha y)
{
return x.ID.Equals(y.ID);
}
public int GetHashCode(RechivHafrasha obj)
{
return obj.ID.GetHashCode();
}
public RechivHafrasha ShallowCopy()
{
var shallowCopy = this.MemberwiseClone() as RechivHafrasha;
return shallowCopy;
}
public override string ToString()
{
return string.Format("[{0},{1},{2},{3},{4},{5}]", Schum, Shiur, Sug, Sachar, MisparMezaheReshuma, MisparMezaheReshumaKodem);
}
}
List<RechivHafrasha> list = new List<RechivHafrasha>
{
new RechivHafrasha(10, 0.5m, 1, 1000, "7d2d272d7268326", "2d2862g2g2d"),
new RechivHafrasha(100, 0.7m, 2, 900, "7d2d272d7268326", "2d2862g2g2d"),
new RechivHafrasha(1000, 0.2m, 5, 80, "7d2d272d7268326", "2d2862g2g2d"),
new RechivHafrasha(10000, 0.41m, 4, 500, "7d2d272d7268326", "2d2862g2g2d"),
new RechivHafrasha(100000, 0.11m, 1, 15, "7d2d272d7268326", "2d2862g2g2d")
};
List<RechivHafrasha> c1 = list.ToList();
List<RechivHafrasha> c2 = new List<RechivHafrasha>(list);
List<RechivHafrasha> c3 = list.ConvertAll<RechivHafrasha>(z => z.ShallowCopy());
list[1].Schum = 0;
Console.WriteLine(string.Join(",\n", list));
Console.WriteLine();
Console.WriteLine(string.Join(",\n", c1));
Console.WriteLine();
Console.WriteLine(string.Join(",\n", c2));
Console.WriteLine();
Console.WriteLine(string.Join(",\n", c3));
Output:
No comments:
Post a Comment