I would also add the multitude of methods available in the VisualBasic
namespace, which duplicate all the classic long standing BASIC statements-
some of which have been around since 1977. For instance, the C# (and indeed
generic .NET) way to retrieve a substring is to use String.Subtring(start,
length) function. However, this is an "Exception-Happy" function... which
throws exceptions for all sorts of things like if the string is smaller
than the length being asked for or hasn't been initialized or whatever.
The classic Left/Mid/Right statements (now in the VisualBasic namespace)
on the other hand are graceful and elegant. Left("smallstr", 30) returns
"smallstr" and doesn't complain that the string is less than 30 characters
long... which is often exactly how you need String.Substring to work.
It's little things like that that C# folks don't miss because they don't
know them. (though even C# users can use the VisualBasic namespace if they
wished or knew about it! ;-) )