tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
293
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Neral
    Neral Neral ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Beiträge
    50
    Hi,
    da ich noch recht neu bin und schon des oefteren ueber diesen Begriff gelesen haben aber nicht genau weiß was er bedeutet frage ich Euch.

    Also was ist der Sinn dahinter ?

    gruss neral
     

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hallo.

    Zum Beispiel die Klasse ArrayList, ihre Add Methode fordert einen Parameter vom Typ Object.
    Jetzt könnte man annehmen das wir, wenn wir etwas in der ArrayList speichern wollen, zuerst eine Typkonvertierung vornehmen müssen. Dem ist aber nicht so, das erledigt .net für uns. Wir können alles mögliche in der ArrayList speichern, weil alles von object abgeleitet ist, und wir brauchen nichts konvertieren/casten weil das .net Automatisch vornimmt.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    ArrayList alist = new ArrayList();
    alist.Add(1); // primitiver Typ integer wird object gewandelt. In ein [i]object[/i]-Objekt gewickelt, zum speichern.
     
    // hier der int nochmal als object
    object o = alist[0];
     
    // und da ist unser integer wieder.
    int i = (int) o;

    Das war ne kurze erklärung, hoffe war verständlich.

    MfG,
    Alex
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  3. #3
    Avatar von Neral
    Neral Neral ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Beiträge
    50
    Hm...

    ArrayList alist = new ArrayList();
    Objekt von ArrayList wir erstelt.

    alist.Add(1);
    1 wird in dem Objekt geschrieben.

    object o = alist[0];
    Ein "dummy" wird erzeugt um den Inhalt vom Objekt alist in ein int wert zu speichern. Muesste es nicht alist[1] sein ?!, denn in der zweiten Zeile wird doch 1 hinzugefuegt oder nicht?

    int i = (int) o;
    Die Umspeicherung erfolgt. Warum steht "(int)" vor dem Objekt? Würde es auch ohne dem gehen? Oder ist es zwanghaft, damit festgelegt ist, dass ein Integerwert im Objekt ist?

    Fragen ueber Fragen

    Ich habe versucht die einzelnen Schritte etwas nachzuvollziehen. Hoffe, dass es so ungefaehr richtig ist.

    gruss und thx
     

  4. #4
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Die ArrayList ist wie ein Array, nur muss man ihr keine fixe Größe geben, weiters hat sie keinen bestimmten Typ.
    Deswegen greife ich auch mit der 0 auf die Zahl wieder zu, es ist ein Index (die 0).

    Ein "dummy" wird erzeugt um den Inhalt vom Objekt alist in ein int wert zu speichern. Muesste es nicht alist[1] sein ?!, denn in der zweiten Zeile wird doch 1 hinzugefuegt oder nicht?
    Damit wollte ich nur zeigen, dass der Integer in eine object-Instanz gewickelt wurde. Könnten wir auch lassen, und stattdessen folgenden Code verwenden.

    Code :
    1
    
    int i = (int) alist[0];

    Das (int) ist eine sogenannte Cast-Operation. Sozusagen eine Typkonvertierung, wobei nicht gewandelt wird,da dass Objekt welches gewandelt wird in unserem Fall ja der Int ist, nur ist er eben ins object gewickelt.

    Diese "Umwandlung" wird benötigt, damit man auf die Methoden welche der eigentliche Typ hat auch aufrufen kann. Mit er object-Instanz kann man dies nicht.
    Weiters kann man einer Methode welche einen Int verlangt, ja kein object übergeben.
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  5. #5
    Avatar von Neral
    Neral Neral ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Beiträge
    50
    Ahhh langsam kommt Licht in die dunklen Ecken

    Ok ich danke Dir fuer Deine ausfuehrliche Erklaerung
    Echt Top!

    Gruss
     

Ähnliche Themen

  1. Vorsicht bei generischen Methoden, Boxing und params
    Von Thomas Darimont im Forum .NET Café
    Antworten: 0
    Letzter Beitrag: 16.03.07, 00:49