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

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
 
J

Jay B. Harlow [MVP - Outlook]

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
 
M

Mark Kamoski

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
 
J

Jay B. Harlow [MVP - Outlook]

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top