difference between Convert.ToString(obj) and CType(obj, String)

  • Thread starter Thread starter Mark Kamoski
  • Start date Start date
M

Mark Kamoski

Hi--

What is the difference between Convert.ToString(obj) and CType(obj,
String)?

(Assume obj is a variable of type Object.)

Please advise.

Thank you.

--Mark
 
Mark,
If obj is type Object, why not just call obj.ToString()?

Convert.ToString is a framework function. Passing it an Object, causes it to
use the IConvertable interface that the object implements, String implements
this interface. I suspect it ultimately calls obj.ToString()

CType is a VB.NET keyword. It calls some internal VB.NET runtime functions.
I suspect it ultimately calls obj.ToString()

Don't forget there is also CStr, which is effectively shorthand for
CType(obj, String)

Also, for reference types (String is a reference type). if you know obj is a
String, DirectCast is better.

The following articles may help:

Visual Basic .NET Internals
http://msdn.microsoft.com/library/d...tml/vbtchmicrosoftvisualbasicnetinternals.asp

Performance Optimization in Visual Basic .NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchPerfOpt.asp

The first article has a section titled: Conversion Functions, CType,
DirectCast, and System.Convert that should address your question.

Hope this helps
Jay
 
Jay--

Which do YOU prefer?

Which do you recommend?

Please advise.

Thank you.

--Mark


Mark,
If obj is type Object, why not just call obj.ToString()?

Convert.ToString is a framework function. Passing it an Object, causes it
to
use the IConvertable interface that the object implements, String
implements
this interface. I suspect it ultimately calls obj.ToString()

CType is a VB.NET keyword. It calls some internal VB.NET runtime functions.
I suspect it ultimately calls obj.ToString()

Don't forget there is also CStr, which is effectively shorthand for
CType(obj, String)

Also, for reference types (String is a reference type). if you know obj is
a
String, DirectCast is better.

The following articles may help:

Visual Basic .NET Internals
http://msdn.microsoft.com/library/d...tml/vbtchmicrosoftvisualbasicnetinternals.asp

Performance Optimization in Visual Basic .NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchPerfOpt.asp

The first article has a section titled: Conversion Functions, CType,
DirectCast, and System.Convert that should address your question.

Hope this helps
Jay
 
Mark,
I prefer to use the one that is appropriate at the time!

I recommend using the one that is appropriate at the time!

If I were a wood worker: When I needed a pocket knife, I would use a pocket
knife. When I needed a hatchet, I would use a hatchet. When I needed a chain
saw, I would use a chain saw.

In other words, there is no simple answer. There is no magic bullet. You
need to read the articles, learn, formulate ideas.

If you look at my code, when I have any variable and I need a string, I
normally use ToString (sometimes I use String.Format, sometimes other
functions). When I have an object, and I need a specific type, I use
DirectCast. When DirectCast is not appropriate I use CType (enums mostly).
However these are not hard and fast rules, these are applying what you learn
by reading the articles we gave you applying the knowledge contained within.

Hope this helps
Jay
 
Back
Top