Those functions support legacy VB6 code. For the most part they duplicate
functionality already available in the .NET framework -- often with evil
little twists that can introduce subtle problems. When I have to work on
VB.NET code, I use the same framework support I use in C#. Any .NET
programmer should know how to use the methods of the string class, such as
IndexOf(), but only a VB developer would know about Instr().
That is the perspective of a person whose primary language is C# and who
does not have much of a legacy VB background, aside from VBScript. On the
other hand, a VB6 developer who liked VB6 often tends to approach VB.NET
from the perspective of changing their coding habits as little as humanly
possible. This is arguably a legitimate point of view, although I'd say
it's a rather narrow and parochial one, and therefore short-sighted. But
when it comes to C# (or any other .NET language) it's definitely
inappropriate to borrow VB compatibility syntax. Each language is what it
is, and if you don't like what it is, you shouldn't use it at all. Besides,
you don't want to write code that only a person who has a background in both
C# and VB.NET could figure out.
--Bob