Laden...

Object oder object

Erstellt von pkoeppe vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.403 Views
P
pkoeppe Themenstarter:in
319 Beiträge seit 2006
vor 17 Jahren
Object oder object

Hallo zusammen,

wollte nur mal fragen, ob es einen Unterschied zwischen

Object obj = new Object();

und

object obj = new Object();

gibt. Selbiges natürlich bei String und string, Int32 und int, Double und double, usw.

Gruß
Patrick

Wer nicht fragt, bleibt dumm.

D
386 Beiträge seit 2007
vor 17 Jahren

Nein

Pound for pound, plutonium is about as toxic as caffeine when eaten.

D
386 Beiträge seit 2007
vor 17 Jahren

Lange Antwort: Das eine sind die zugrundeliegenden .Net Datentypen/Klassen, das andere sind (C#-/Sprach-)spezifische Keywords/Alias-Definitionen.

Pound for pound, plutonium is about as toxic as caffeine when eaten.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo DarKlajid, hallo pkoeppe,

naja, technisch gibt es natürlich schon einen Unterschied. Das eine sind Schlüsselworte, das andere Klassennamen. Aber da die Schlüsselworte nur Synonyme für die Klassennamen sind, kann man beides benutzen und im Prinzip sogar bunt mischen (was man aber nicht machen sollte).

herbivore

PS: Zu spät

4.207 Beiträge seit 2003
vor 17 Jahren

Beweis kann mittels ildasm geführt werden:

int x = 5;

und

Int32 y = 5;

erzeugen den gleichen Code.

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

D
386 Beiträge seit 2007
vor 17 Jahren

Original von herbivore
PS: Zu spät

:-p

Pound for pound, plutonium is about as toxic as caffeine when eaten.

P
pkoeppe Themenstarter:in
319 Beiträge seit 2006
vor 17 Jahren

Schönen Dank für die fixen Antworten.

@herbivore: Was sollte man verwenden, eher die Klassennamen oder eher die Schlüsselwörter?

Gruß
Patrick

Wer nicht fragt, bleibt dumm.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo pkoeppe,

das ist bis zu einem gewissen Maße Geschmackssache. Ich verwende immer die Schlüsselworte, außer bei Object und String, weil das beides Referenztypen sind.

herbivore

4.506 Beiträge seit 2004
vor 17 Jahren

Hallo zusammen,

da die Frage wohl meiner Meinung nach abgeschlossen ist, würde ich gerne noch etwas ergänzendes wissen. (Ich weiß, dass es schon mal so eine Diskussion hierfür gab, ich finde sie nicht wieder):

Ein "int" ist auf die Klasse System.Int32 gemappt, das ist unbestrittener Fakt. Wie ist das auf 64Bit Systemen? Muss ich aufpassen wenn ich das Schlüsselwort "int" verwende, oder ist das fix auf 32-Bit Integer definiert?

Wenn es fix definiert ist, wie heißt dann entsprechendes Schlüsselwort für einen "64-Bit-System-Long", also ein Int128?

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo norman_timo,

die Diskussion gab es und ich bin immer noch der Meinung, dass die alias-Zuordnungen fest sind und sich nicht von System zu System ändern.

Es ist auch nicht gesagt, dass es auf 64-Bit-Systemen überhaupt einen Int128 geben muss, bzw. sage ich mal, dass es ihn nicht gibt. Außerdem muss es nicht für jeden Typen eine Alias geben, da man ja Int128 benutzen könnte, wenn es das denn gibt. Ich denke, du siehst Problemen, wo keine sind. 🙂

herbivore

4.506 Beiträge seit 2004
vor 17 Jahren

Hallo Herbivore,

Ich denke, du siehst Problemen, wo keine sind.

Naja dann würde ich ja keine "int" benutzen, sondern immer explizit Int32 benutzen 😁

Ich wollte hier auch nicht eine (nochmalige) Diskussion darüber breit treten, aber ich erhoffte eine Quelle (am liebsten Microdoft), dass die Alias-Definitionen wirklich fest bleiben.

Mir im Prinzip Wurscht. Sofern meine Software auf 64Bit-Systemen laufen soll, wird dies separat getestet.

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo norman_timo,

Ich wollte hier auch nicht eine (nochmalige) Diskussion darüber breit treten, aber ich erhoffte eine Quelle (am liebsten Microdoft), dass die Alias-Definitionen wirklich fest bleiben.

mal andersherum, woher nimmst du denn, dass sich das ändern könnte? In der Doku steht davon nichts. Da ist im Gegenteil immer sowas angegeben wie ein int ist eine 32-Bit-Ganzzahl mit Vorzeichen.

Ich denke, weil das so klar ist, gibt es auch keine (offensichtliche) Quelle wo Microsoft das nochmal explizit schreibt.

Ok, in C war das anders. Da war die Größe der Typen maschinenabhängig. Aber das stand dann auch überall. Man kann m.E. aus den C-Wurzeln von C# nicht schließen, dass das in C# etwa übernommen wurde. Schon in C++ wurden die Größen bestimmter Typen unveränderbar festgelegt.

herbivore

4.506 Beiträge seit 2004
vor 17 Jahren

Hallo Herbivore,

aus dieser Sicht heraus ist das richtig. Ich habe es in dem Sinn auch nicht bestritten.

Vielleicht ist wirklich der Grund, dass ich (als ich noch klein war) mit C angefangen hatte, und ich das so im Kopf hatte, da da auch der Wandel zwischen 16 und 32 Bit Systemen stattfand, und ich damals die Brötchenfraktion der Informatiker im Dreieck hüpfen sah 😉

Ich denke gerne mal ein wenig zu weit, und habe ab und zu Paranoia was solche Dinge angeht 😉

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

6.862 Beiträge seit 2003
vor 17 Jahren

Das ein int auf Int32 mappt steht doch in der Language Spec. Von daher wird sich das nicht ändern. Soweit ich weiß wird auch mit 3.0 kein 128 Bit Integer dazukommen, nur der BigInt welcher potentiell unendlich groß werden kann.

Baka wa shinanakya naoranai.

Mein XING Profil.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo talla,

3.0

falle ich auch immer drauf rein. 3.0 gibt es ja schon. Du meinst aber die nächste kommende Version.

herbivore

6.862 Beiträge seit 2003
vor 17 Jahren

Ich hab ja von der Sprache gesprochen 😉 Da kommt 3.0 erst noch.

Baka wa shinanakya naoranai.

Mein XING Profil.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo talla,

tja, ist die Frage, ob MS bei der Sprache einfach eine Versionsnummer überspringt. Ich glaube die Diskussion hatten wir schon mal. 🙂

herbivore