C# casts - is vs as
Antag følgende funktionelt identiske kodestumper:foreach(object o in MyObjectCollection)
{
if ( o is MyClass )
((MyClass)o).DoStuff();
}
--- versus ---
foreach(object o in MyObjectCollection)
{
if ( o is MyClass )
(o as MyClass).DoStuff();
}
Hvilken version vil være at foretrække ? Her tænker jeg på, om der er nogen performance mæssig forskel på C-style cast eller "as" keywordet, eller om der er andre grunde til at foretrække den ene fremfor den anden ? Jeg ved at "as" er et safe cast, dvs. der blot returneres null fremfor at en exception kastes; men det burde jo være irrelevant her, eftersom der først testes om objektet er af den ønskede type.