Using Reflector to look at identical VB.NET and C# code, I would say that in
MOST cases the use of CStr is less effiecient. The only time I can see an
advantage of using CStr is in the case that the value is already a string,
in that one case the VB.NET compiler optimizes away the call to .ToString.
In all other cases, it makes a call to a overload of Conversions.ToString,
which then calls the value.ToString method. So, essentially in every other
case, you get two function calls instead of one.
Here is what the HELP section says for Type Conversion Functions (part
of the VB2005 help system)
As a rule, you should use the Visual Basic type conversion functions
in preference to the .NET Framework methods such as ToString(), either
on the Convert class or on an individual type structure or class. The
Visual Basic functions are designed for optimal interaction with
Visual Basic code, and they also make your source code shorter and
easier to read. In addition, the .NET Framework conversion methods do
not always produce the same results as the Visual Basic functions, for
example when converting Boolean to Integer. For more information, see
Troubleshooting Data Types.