I have been finding lambda and extension methods really helpful in my game port.
Blobs of C styled single linked list code, when changed to generic lists boil down to one line.
like this:
Item item = player.itemsPtr;
while (item != null)
{
Item next_item = item.next;
if (item_type == item.type)
{
lose_item(item, player); // just removes from linked list.
}
item = next_item;
}
to this:
player.items.RemoveAll(item => item.type == item_type);
much nicer.