What are we coming to?
For the past 4 years, .Net has been my framework of choice. Prior to that, I used Visual C++ for 6 years. There are some great things about .NET that I didn’t have with C++. But with these great techniques comes a high responsibility, and that is, to understand what it is that the framework is doing for you. Most people who have used .NET for a week or more know about the foreach command. It’s great, it lets us iterate through lists and always have a type-safe object to deal with. We don’t have to worry about the number of items in a list, and whether the list is 0 or 1 indexed (0, by the way). However, this causes some problems as well. Recently I was on a forum and someone asked if there is a way to go through a list in reverse order. This guy had a list of objects, for example People. If these are sorted from A-Z on last name, he wanted to work backwards and go from Z-A but there isn’t a foreachreverse command.
He has two options:
1. He could use the Reverse() extension method in Linq, and have something like
foreach(var obj in Persons.Reverse()) { }
2. He could break down and write a good old fashioned loop
for(int i = Persons.Count -1; i >= 0; --i) { Person p = Persons[i]; }
Truth be told, option #1 is probably optimized in the CLR, but every developer should instantly think of option #2 before looking to see if there are better ways of doing things, which sadly was not the case here.