Array mit unterschiedlichen Objekten
-
Ich glaub das nennt man "Boxing", oder ist das wieder was anderes?
-
Erst mal vielen dank,
kann ja jetzt sein das ich mich einfach nur zu doof anstelle, aber wenn ich das jetzt so mache
Klasse obj = new Klasse(); Klasse2 obj2 = new Klasse2(); object[] o = new object[] { obj, obj2 };
und meine Klassen z.B. die Variable Farbe haben ( auf public) bekomme ich den Fehler object enthält keine Definition für Farbe.
Kann ich object irgendwie auch ne Variable namens Farbe geben oder habt ihr sonst ne idee, wäre echt nettAlexander
-
Hi,
du kannst das Verfahren nur anwenden, wenn deine Klasse von Objekt erbt.
-
public class A { public Color color = Color.Green; } public class B { public Color color = Color.Yellow; }
Un dann in einer anderen Klasse:
A a = new A(); B b = new B(); object[] o = new object[] { a, b }; Color colorClassA = ( o[0] as A ).color; Color colorClassB = ( o[1] as B ).color;
-
Online schrieb:
Ixtana schrieb:
das geht aber nur weil alle die gleiche Basis Objekt haben oder?
jop...und da alle Klassen in .Net die Basisklasse Object haben, geht das mit jeder
gilt das auch für selbst definierte Klassen? (kann ich mir nicht so recht vorstellen) Wenn nein, warum ist Noodles sein Beispiel möglich?
-
Schau Dir doch mal eine Klasse aus meinem Beispiel an.
Was meinst Du, warum eine Instanz von z.B. A, Methoden wie GetType() oder ToString() besitzt?
-
hm hast recht.
-
Ixtana schrieb:
Online schrieb:
Ixtana schrieb:
das geht aber nur weil alle die gleiche Basis Objekt haben oder?
jop...und da alle Klassen in .Net die Basisklasse Object haben, geht das mit jeder
gilt das auch für selbst definierte Klassen? (kann ich mir nicht so recht vorstellen) Wenn nein, warum ist Noodles sein Beispiel möglich?
alle Klassen....auch deine eigenen
-
Erst mal vielen dank, hab jetzt auch folgende möglichkeit gefunden:
try { ((Klasse) ArrayvonKlassen[index]).MethodederKlasse(); } catch { // FEhler }
Damit gehts, nur achtet auf das try catch
Ansonsten gehts noch ganz gut mit
if(ArrayvonKlassen[index] is Klasse)
Hoffe das hilft anderen nach mir weiter
Alexander
-
Und 'as' hilft nicht?
-
Helium schrieb:
Und 'as' hilft nicht?
doch hilft wenn man weis wie
-
Immer die Exception zu fangen ist IMHO Unsinn, wenn man erwartet, dass in dem Array Objekte sind, die nicht zuweisungskompatibel sind.
Der einfache cast, der eine Exception wirft, ist für Fälle da, wo man erwartet, dass es immer gut ist. Wenn man beispielsweise einen String deserialisiert, gibt einen der Formatter nur object.
Da man aber einen String mit Sicherheit erwartet, kann man casten. Zum "ausprobieren" ist der Cast nicht gedacht.
-
the-architect schrieb:
Ich glaub das nennt man "Boxing", oder ist das wieder was anderes?
Is was anderes.
http://www.programmersheaven.com/articles/arun/boxing.htm