A Complete Guide - Difference Between Convert ToString and ToString in C#
Difference Between Convert.ToString and ToString in C# Explained in Detail
1. Method Source
- ToString(): This is a method that is part of the
System.Objectclass in .NET. Every class in C# implicitly inherits fromSystem.Objectand thus has access to theToStringmethod. When overridden in a class,ToString()is intended to provide a string representation of the object. - Convert.ToString(): This method is part of the
System.Convertclass and is used for converting a variety of data types to a string. It provides a more centralized and versatile approach for type conversion.
2. Null Handling
- ToString(): When called on a
nullreference, it will throw aNullReferenceException. This is becauseToStringis a method that needs to be called on an instance of an object. - Convert.ToString(): When passed a
nullvalue, it will return an empty string (""). This behavior makesConvert.ToStringsafer to use when dealing with potentiallynullvalues.
3. Usage Patterns
- ToString(): Typically used when you have a strongly typed object and you want a string representation of it. It’s often overridden in custom classes to provide meaningful output.
- Convert.ToString(): Used when dealing with different data types or when you are not sure of the type of the data being converted. It’s particularly useful in scenarios like data binding, where the type of data could vary.
4. Performance
- ToString(): Generally faster than
Convert.ToString()because it is a method specifically designed for the object in question, avoiding the overhead of general conversion logic. - Convert.ToString(): Since it involves more complex logic to handle different types, it can be slightly slower compared to
ToString(). However, the performance difference is usually negligible unless in very high-frequency conversion scenarios.
5. Handling Non-String Types
- ToString(): Requires an object or value type that has implemented a meaningful
ToStringmethod. For primitive types, theToStringmethod is already implemented to return a string representation. - Convert.ToString(): Works with a wide variety of types, providing a consistent way to convert different data types to strings, including
DateTime,Boolean,Enum, and numeric types.
6. Culture-Specific Formatting
- ToString(): When used with numeric or date types, it can accept culture-specific formatting information through methods like
ToString(string format, IFormatProvider provider). - Convert.ToString(): Does not take culture-specific formatting as a parameter directly. However, it uses the current culture settings implicitly, which might not always be desirable.
7. Return Values on Failure
- ToString(): Will throw an exception if conversion is not possible, such as calling
ToString()on anullreference. - Convert.ToString(): Will return an empty string for
nullvalues and will not throw exceptions for most type conversions, making it more robust in error-prone scenarios.
Example Code Illustration
Here’s a simple example to illustrate the usage and differences:
Online Code run
Step-by-Step Guide: How to Implement Difference Between Convert ToString and ToString in C#
Step 1: Understanding the Basics
Convert.ToString(): This is a static method provided by theSystem.Convertclass. It attempts to convert an object to a string. If the object isnull, it returns an empty string (""). It provides more flexibility as it can handlenullvalues gracefully.ToString(): This is an instance method available to all objects in C#. It is a part of theSystem.Objectclass. It converts an object to its string representation. If the object isnull, callingToString()on it will throw aNullReferenceException.
Step 2: Setting Up a C# Console Application
- Open Visual Studio (or your preferred C# IDE).
- Create a new Console Application project.
- Name the project (e.g.,
ToStringExamples).
Step 3: Writing Example Code
Let's write an example that demonstrates the usage of both Convert.ToString() and the ToString() method.
Main Method
Here's the complete code for the Main method:
using System;
namespace ToStringExamples
{
class Program
{
static void Main(string[] args)
{
// Example with a non-null object
int number = 123;
string numberStr1 = Convert.ToString(number);
string numberStr2 = number.ToString();
Console.WriteLine("Number converted using Convert.ToString(): " + numberStr1);
Console.WriteLine("Number converted using ToString(): " + numberStr2);
// Example with a null object
object nullObject = null;
string nullStr1 = Convert.ToString(nullObject);
try
{
string nullStr2 = nullObject.ToString();
}
catch (NullReferenceException ex)
{
Console.WriteLine("Exception caught: " + ex.Message);
}
// Print the results of Convert.ToString() when null
Console.WriteLine("Null object converted using Convert.ToString(): " + nullStr1);
Console.ReadLine();
}
}
}
Explanation
Example with a Non-Null Object:
- We have an integer
numberwith a value of123. - We use
Convert.ToString(number)andnumber.ToString()to convert the integer to a string. - Both produce the same result, which is the string representation of the number "123".
- We have an integer
Example with a Null Object:
- We create an object
nullObjectand set it tonull. - We use
Convert.ToString(nullObject)to convert the null object to a string. It returns an empty string (""). - We try to use
nullObject.ToString(), which throws aNullReferenceExceptionbecause we're attempting to call a method on anullreference. - We handle the exception and print the error message.
- We create an object
Step 4: Running the Application
- Build and run the application.
- You should see the following output in the console:
Login to post a comment.