Kleine Anfängerfrage zu Datentypen
-
Tagchen
Als blutiger Programmieranfänger, versuch ich mich zur Zeit in C# einzulesen, was auch soweit Reibungslos klappt (vom Verständnis her jedenfalls). Nur bin ich jetzt bei den Datentypen angekommen und hab gelesen, dass man object wohl als universellen Typ verwenden kann.
Nachdem ich mich dann mal in Foren umgesehen hab und verschiedene Tutorials und E-Books durchgeguckt hab, bin ich jetzt soweit, dass ich weiß, dass object nichnur ein Datentyp, sondern eine ganze Klasse ist. Das hilft mir aber nicht besonders und deswegen (nach der langen Einführung) zu meiner Frage:
Wofür verwendet man object, oder (was mich eher interessiert) wofür verwedet man object nicht? Es muss da ja irgendwelche erheblichen Nachteile geben, sodass man sich lieber mit den anderen Datentypen einlässt.
-
Ich kann's nicht beschwören, aber soweit ich weiß, sind C# und
Java in der Hinsicht gleich aufgebaut.object (Object in Java) ist die oberste Klasse in der Klassenhierarchie
von der direkt oder indirekt sämtliche Klassen abgeleitet sind.C++ kennt zum Beispiel keine gemeinsame Oberklasse.
Alles andere (ints, chars) sind primitive Datentypen und in keiner Klassenhierarchie.
-
Schön wenn ein java mensch die antwort gibt, unter dotnet sind alle datentypen von object (Klassenname: Object) abgeleitet, auch primitive Typen sind indirekt davon abgeleitet (werden nur anders im Speicher abgelegt). Somit kannst du object als platzhalter für datentypen verwenden. Der einzige große nachteil ist, dass wenn du object als allgemeinen datentyp verwendest, du immer casten must um auf die Methoden und Felder der echten Klasse zugreifen zu können. C# vereinfacht einige Datentyp-Schreibweisen, so ist int das gleiche wie System.Int32
-
Datentypen schrieb:
auch primitive Typen sind indirekt davon abgeleitet (werden nur anders im Speicher abgelegt).
Wie darf ich denn das verstehen.
Soweit ich weiß kennt C#, genau wie Java, sowohl die primitiven
Datentypen (aus Performancegründen) als auch deren Wrapper-Klassen.Schließlich war es doch C# die für die automatische Umwandlung
das Autoboxing, -unboxing eingeführt hat, das schließlich auch
von Java übernommen wurde.
-
Javaner schrieb:
Schließlich war es doch C# die für die automatische Umwandlung
das Autoboxing, -unboxing eingeführt hat, das schließlich auch
von Java übernommen wurde.Wenn ich dich nun richtig verstehe hast du Recht. Die Implizite Typumwandlung (automatische) funktioniert aber nur in Typen höherer Wertigkeit.
Sprich:
int i = 1; //Impliziertes Typcasting, da object höherwertig als int object o = i; //Expliziter Typcasting int i2 = int.Parse(o.ToString());
Ich hoffe ich habe dich nun richtig verstanden Javaner.