steinadler Geschrieben 25. November 2011 Geschrieben 25. November 2011 Hallo ihr, kann mir jemand sagen, warum im gesamten .Net und in vielen DLL's so oft der Typ int verwendet wird? Zum Beispiel bei Array-Indizes. Wäre da nicht uint angebrachter? Negativ geht ja eh nicht. Grüße Steinadler
Crash2001 Geschrieben 25. November 2011 Geschrieben 25. November 2011 [...]Der Integer-Datentyp bietet in Verbindung mit einem 32-Bit-Prozessor eine optimale Leistung. Die anderen ganzzahligen Typen werden langsamer in den Arbeitsspeicher geladen und im Arbeitsspeicher gespeichert bzw. langsamer aus dem Arbeitsspeicher geladen. Der Standardwert von Integer ist 0 (null). [...] QuelleWird wohl aus dem Grunde der Performance gemacht. Eventuell ist bei 64 Bit Prozessoren ja dann was anderes am schnellsten, oder aber es ist auch der Integer.
steinadler Geschrieben 25. November 2011 Autor Geschrieben 25. November 2011 Aha... Aber büßt man nicht die gewonnene Performance wieder ein, wenn man dann <0 prüfen muss?
Crash2001 Geschrieben 25. November 2011 Geschrieben 25. November 2011 Wieso musst du <0 prüfen? :confused: Da ein normaler Index nur positive Zahlen hat, kann als Index auch nur eine positive Zahl bei rauskommen. Oder wie meinst du das jetzt?
steinadler Geschrieben 25. November 2011 Autor Geschrieben 25. November 2011 Wieso musst du <0 prüfen? :confused: Da ein normaler Index nur positive Zahlen hat, kann als Index auch nur eine positive Zahl bei rauskommen. Oder wie meinst du das jetzt? Wenn ich mir selbst eine Zugriffsfunktion baue oder this[int _index] implementiere oder wie auch immer, dann muss ich <0 prüfen. Ich dachte immer, diese Überprüfung spart man sich wenn man uint nutzt.
Klotzkopp Geschrieben 25. November 2011 Geschrieben 25. November 2011 kann mir jemand sagen, warum im gesamten .Net und in vielen DLL's so oft der Typ int verwendet wird?Es könnte daran liegen, dass vorzeichenlose Typen anfälliger für Programmierfehler sind. Wenn man eine Schleife baut, die beispielsweise von 10 bis 0 rückwärts zählt, ist das mit einer vorzeichenbehafteten Schleifenvariablen trivial, aber bei einer vorzeichenlosen können sich da schnell Fehler einschleichen. Zudem braucht man ein komplexes und unter Umständen unintuitives Regelwerk für Operationen, an denen sowohl vorzeichenlose als auch vorzeichenbehaftete Werte beteiligt sind: Welchen Typ hat das Ergebnis einer Addition von einem vorzeichenlosen und einem vorzeichenbehafteten Wert? Was ist mit der Subtraktion? Was ist mit Vergleichen? Solange du die Typen getrennt halten kannst, ist das alles prima, aber sobald du sie in einem Ausdruck mischst, wird's eklig.
Sacaldur Geschrieben 25. November 2011 Geschrieben 25. November 2011 Aber büßt man nicht die gewonnene Performance wieder ein, wenn man dann <0 prüfen muss? das kommt auf die Implementierung an es kann sein, dass man über eine andere Exception herausfinden kann, dass der Index zu klein war allerdings wird generell nicht geprüft, ob der Index < 0 ist, was man an den Fehlermeldungen sehen kann, die nur einen Index außerhalb des gültigen Bereichs anmerken
Gum'Mib'Aer Geschrieben 28. November 2011 Geschrieben 28. November 2011 kann mir jemand sagen, warum im gesamten .Net und in vielen DLL's so oft der Typ int verwendet wird? Zum Beispiel bei Array-Indizes. Wäre da nicht uint angebrachter? Negativ geht ja eh nicht. Weil UInt32 nicht CLS-Kombatibel ist.
steinadler Geschrieben 28. November 2011 Autor Geschrieben 28. November 2011 Weil UInt32 nicht CLS-Kombatibel ist. Danke für den Link... sehr aufschlussreich. Danke euch allen für eure Bemühungen.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden