kostenloser Webspace werbefrei: lima-city


C# Explizite Typumwandlung

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    s******i

    Hallo liebe Lima-City-Community!

    Wie die Überschrift schon verrät, möchte ich eine Explizite Typumwandlung für meine DataRows vornehmen. Da ich aber nicht jedes Mal den DatenTyp der jeweiligen DataColumn angeben möchte, habe ich mir gedacht, dass die Typumnwandlung einfach dem Data-Column-Typ angeglichen wird. Ich habe mir das folgendermaßen vorgestellt:

    void function ( object value )
    {
               DataRows row["Column1"] = ( DataSetObject.Tables["Tablename"].Columns["Columnname"].GetType() ) value;
    }


    Allerdings nimmt mein Compiler diesen Code nicht an! Er möchte, dass ich ein ";" vor value setze.


    Beitrag zuletzt geändert: 16.10.2010 14:15:59 von spuglisi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also Ich hab ma geschaut bei mir und in der MSDN Library gibt es keine DataRows nur DataRow, ebensowenig DataSetObject in System.Data. Hast du eine andere using?

    Wenn ich das bei mir einfüge kommen da gleich 8 Fehler.
    Sind DataRows und DataSetObject eigene Klassen von dir?

    Beitrag zuletzt geändert: 18.10.2010 21:08:30 von fenox
  4. Die Funktion GetType() liefert eine Type-Instanz, die den exakten Laufzeittyp der aktuellen Instanz darstellt.
    Sprich ein ganz gewöhnliches Objekt.

    In deinem Code möchtest du value explizit casten. Gibst aber keinen Typ an, wie z.B. der generische (DataColumn), sondern ein Objekt (man könnte hier auch Variable dazu sagen).

    Deinem Code nach, scheint value ein Objekt zu sein, dessen Typ (Klasse) von DataColumn geerbt hat.
    Ich würde dir raten, value auf seinen Typ zu prüfen und einen korrekten Cast zu formulieren.

    if (value is MyStringDataColumn)
    {
        row["Column1"] = (MyStringDataColumn) value;
    }
    
    if (value is MyInt32DataColumn)
    {
        row["Column1"] = (MyInt32DataColumn) value;
    }

  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!