tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
393
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Meldur Meldur ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    143
    Hallo! Ich habe ein object, in welchem sich ein Int-Array unbekannter Dimension versteckt. Nun bekomme ich diese zwar über ein GetType heraus, nur kann ich diese Variable nicht casten, da dies dann wohl in einer If-Anweisung (Unterscheidung der ermittelten Casting-Typen) geschehen müßte. Casten in einer If-Anweisung setzt jedoch eine vorher deklarierte Variable voraus, deren Typ ich aber nunmal noch nicht kenne. Weis jemand Rat?
    Danke, Peter
     

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Hallo Meldur!

    Denk mal bitte logisch.
    Ein Array vom Typ int gibt dir entweder ein int oder null (Feld nicht initialisiert) zurück.
    Wieso willst Du dann noch auf Type prüfen? Das solltest Du wenn dein Array vom Typ object ist.

    Wenn Du Herrausfinden willst ob ein bestimmter Typ aus einem ObjektArray herrausgecasted werden kann,
    kannst du den Operator as verwenden. Du bekommst null wenn nicht gecasted werden konnte
    und ansonsten das object. Bei Zahlen funktioniert dieses aber nicht weil sie ein WertTyp sind.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    object[] oArray = new object[3];
    oArray[ 0 ] = (string) "ein String";
    oArray[ 1 ] = (Int32) 99;
    // Das letzte bleibt null
     
    foreach ( object obj in oArray ){
        if ( obj as string != null )
            MessageBox.Show( string.Format( "String gefunden! Wert=\"{0}\"", (string) obj ) );
        else if ( obj != null && obj.GetType().Equals( typeof(System.Int32) ) )
            MessageBox.Show( string.Format( "Zahl gefunden! Wert=\"{0}\"", (int) obj ) );
        else if ( obj == null)
            MessageBox.Show( "Wert ist null" );
    }
    Casten in einer If-Anweisung setzt jedoch eine vorher deklarierte Variable voraus
    Falsch, Objekte in einer If-Anweisung müssen initialisiert sein.
    Das sie Deklariert sein müssen ist klar, sonst wären sie gar nicht da.
    Die VS IDE prüft vor dem Kompilieren ob die Objekte in den If-Anweisungen nicht initialisiert sind und meldet dies gegebenenfalls.
    Kompilieren kann man sowieso, aber dein Proggi würde in der If-Anweisung eine Ausnahme werfen.
    Du musst also deine Variablen und Arrays immer mit einem Wert initialisieren.
    Objekte wenigstens mit null. Und Zahlen mit einem Wert

    MfG, cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    Meldur Meldur ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    143
    Hi! Mir ist schon klar, daß ein Array eines bestimmten Typs auch nur diesen (oder halt NULL) zurückliefern kann - allerdings geht es in meinem speziellen Fall (ich wollte es ja eigentlich allgemeiner fassen) darum, daß ich ein int-Array unbekannter Dimensionierung in einem Objekt erhalte und aber damit arbeiten muß - nun kann ich das ja wie bereits erwähnt nur in eine Variable casten, die bereits einem Array dieser Form entspricht - ergo hab ich ein Problem und suche dazu ein Lösung.
     

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wieso verwendest zb nicht eine ArrayList? Dann hast das Problem erst gar net ...
     

Ähnliche Themen

  1. Casten
    Von JohnathanBernstein im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 2
    Letzter Beitrag: 14.08.07, 13:28
  2. Casten von Generics
    Von dr-oetker im Forum Java
    Antworten: 2
    Letzter Beitrag: 13.04.07, 09:37
  3. Casten in PHP
    Von baccula im Forum PHP
    Antworten: 0
    Letzter Beitrag: 12.02.06, 14:15
  4. int zu String casten
    Von noel1982 im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 23.06.05, 13:26
  5. Typen casten in vb?
    Von sra im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 08.10.04, 13:06