Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

Alter cast oder neuer cast ?

In C# gibt es neben dem C-Style cast "(Foo)" auch die Möglichkeit mit dem "as" Operator eine Typumwandlung durchzuführen. Wann verwendet man aber welchen? Gute Frage - es gibt meiner Ansicht nach aber eine einfache Regel: Wenn die Typumwandlung auf jeden Fall möglich sein muss, dann will man den "alten" cast, gibt es im Code später hingegen noch eine Behandlung, ob die Umwandlung mit "as" geklappt hat - und nur dann - verwendet man den "as".

Zum Beispiel:

// Hier ist es zwingend, das o ein BarObj ist.
void foo( object o)
{
   BarObj bar = (BarObj)o; // <- Wenn das nicht geht, gibt es an dieser Stelle eine Exception.

   // .... mehr code
}

// Hier wird erwartet, das auch was anderes ankommen kann
void foo2( object o)
{
   BarObj bar = o as BarObj;

   if( bar != null)
   {
       // Ohne einen solchen Vergleich auf null ist der "as" nicht angebracht.
   }
}

Comments are closed