Hey Leute,
ich gebe MoepMoep so ziemlich Recht. Sein Lösungsansatz ist deutlich besser als hässliches gesplitte.
Du solltest deine Daten die du anzeigst immer als Objekt halten. In deinem Fall eine Collection.
Zu MoepMoeps Lösungsvoschlag würde ich etwas ändern, aber nur wenn folgende Umstände richtig sein sollten.
Sollte die Werte Gold, Silber und Bronze einfach nur Kategorien sein um es leichter zu erkennen wie bei World of Warcraft ( oder wie im Verhältnis bei Gramm, Kilogramm und Tonnen ), dann würde ich vorschlagen diese Kategorien nur zum Anzeigen zu nutzen und in deiner Klasse eine Property erstellen die nur die kleinste Einheit speichert.
Deine Klasse könnte so aussehen:
Code:
public class Order
{
//Eindeutige Bezeichner sind immer nett!
public int Id { get; set; }
//Artikelname
public string Name {get; set;}
//Anzahl
public int Amount {get;set;}
//Preis für ein Artikel
public UInt32 Price { get; set; }
//Gesampreis
public UInt64 OverallPrice
{
get { return ((UInt64)Amount) * ((UInt64)Price);}
}
}
zum Anzeigen rechnest du dann einfach die Anzahl von Bronze, Silber und Gold aus. Das kannst du auch schon in der Klasse machen wenn du magst, mit folgenden Gettern:
Code:
//Berechnung auf Grundlage der Annahme, dass 1 Silber == 100 Bronze und 1 Gold == 100 Silber sind.
public int Gold {
get { return (int) (OverallPrice / 10000); }
}
public int Silver {
get { return (int) (OverallPrice % 10000) / 100; }
}
public int Bronze {
get { return (int) (OverallPrice % 100); }
}
Je nachdem wie Oft du auf die Daten zugreift ohne sie zu Ändern macht es sicher auch sinn die Ergebnisse der Properties die berechnet werden in einer privaten Variable zu cachen. So musst du dich auch nicht darum kümmern wie du die Sachen addierst, da ich einfach davon ausgehe, dass zwischen den drei Preiswerten eine Verbindung besteht. ( Geht darum, dass wenn du zu 80 Bronze noch 30 addierst du wahrscheinlich 1 Silber und 10 Bronze haben möchtest ).
P.S.: Es handelt sich hierbei um C# Code und nicht VB.NET.