I had a performance problem today that showed up after some profiling. Calls to List<>.RemoveAt(0) were taking a long time. I'd assumed System.Collections.Generic.List would be implemented with a list data structure, but actually its implemented as an array.
Does anyone else find that surprising?