web-dev-qa-db-ja.com

Convert.ToString()と.ToString()の違い

Convert.ToString().ToString()の違いは何ですか?

オンラインで多くの違いを見つけましたが、大きな違いは何ですか?

147
TinTin

Convert.ToString()nullを処理しますが、ToString()は処理しません。

218
Ryan

オブジェクトでToString()を呼び出すと、オブジェクトがnullではないことを前提とします(オブジェクトがインスタンスメソッドを呼び出すにはオブジェクトが存在する必要があるため)。 Convert.ToString(obj)は(Convertクラスの静的メソッドであるため)オブジェクトがnullでないと仮定する必要はありませんが、代わりにis nullの場合はString.Emptyを返します。

60
Chris Dwyer

null値の処理に関する他の回答に加えて、Convert.ToStringは、ベースObject.ToStringを呼び出す前にIFormattableおよびIConvertibleインターフェイスを使用しようとします。

例:

class FormattableType : IFormattable
{
    private double value = 0.42;

    public string ToString(string format, IFormatProvider formatProvider)
    {
        if (formatProvider == null)
        {
            // ... using some IOC-containers
            // ... or using CultureInfo.CurrentCulture / Thread.CurrentThread.CurrentCulture
            formatProvider = CultureInfo.InvariantCulture;
        }

        // ... doing things with format
        return value.ToString(formatProvider);
    }

    public override string ToString()
    {
        return value.ToString();
    }
}

結果:

Convert.ToString(new FormattableType()); // 0.42
new FormattableType().ToString();        // 0,42
20
Alexander

この例を介して違いを理解しましょう:

int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));

i.ToString ()またはConvert.ToStringを使用して、整数iを変換できます。それで、違いは何ですか?

それらの基本的な違いは、Convert関数がNULLを処理するのに対し、i.ToString ()は処理しないことです。 NULL参照例外エラーがスローされます。したがって、convertを使用したコーディングの実践は常に安全です。

10
Swati

クラスを作成し、toStringメソッドをオーバーライドして、必要な処理を実行できます。

たとえば、クラス"MyMail"を作成し、toStringメソッドをオーバーライドして、現在のオブジェクトを書き込む代わりに電子メールを送信したり、他の操作を実行したりできます。

Convert.toStringは、指定された値を同等の文字列表現に変換します。

6
user2039962
object o=null;
string s;
s=o.toString();
//returns a null reference exception for string  s.

string str=convert.tostring(o);
//returns an empty string for string str and does not throw an exception.,it's 
//better to use convert.tostring() for good coding
5
sudeep

メソッドは「基本的に」同じです。except処理null

Pen pen = null; 
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException

MSDNから:
Convert.ToStringメソッド

指定された値を同等の文字列表現に変換します。

Object.ToString

現在のオブジェクトを表す文字列を返します。

4
hdoghmen

コード愛好家にとってこれが最良の答えです。

    .............. Un Safe code ...................................
    Try
        ' In this code we will get  "Object reference not set to an instance of an object." exception
        Dim a As Object
        a = Nothing
        a.ToString()
    Catch ex As NullReferenceException
        Response.Write(ex.Message)
    End Try


    '............... it is a safe code..............................
    Dim b As Object
    b = Nothing
    Convert.ToString(b)
3
Abdul Saboor

Convert.ToString()では、変換はNULL値を処理するかどうかを処理しますが、.ToString()ではNULL値とNULL参照例外エラーを処理しません。したがって、Convert.ToString()を使用することをお勧めします。

3
Ajay Saini

@Ryan の答えに同意します。ちなみに、この目的のためにC#6.0以降では、次を使用できます。

someString?.ToString() ?? string.Empty;

または

$"{someString}"; // I do not recommend this approach, although this is the most concise option.

の代わりに

Convert.ToString(someString);
3
AndreyWD

Convert.ToString(strName)はnull値を処理し、strName.Tostring()はnull値を処理せず、例外をスローします。

したがって、Convert.ToString()を使用してから.ToString();を使用することをお勧めします

2

ToString()はnull値を処理できず、convert.ToString()はnull値を処理できるため、システムでnull値を処理するにはconvert.ToString()を使用します。

2
viplov
ToString() Vs Convert.ToString()

類似点:-

両方とも、特定の型を文字列に変換するために使用されます。つまり、intからstring、floatからstring、またはobjectからstringに変換します。

違い:-

ToString()はnullを処理できませんが、Convert.ToString()の場合はnull値を処理します。

例:

namespace Marcus
{
    class Employee
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    class Startup
    {
        public static void Main()
        {
            Employee e = new Employee();
            e = null;

            string s = e.ToString(); // This will throw an null exception
            s = Convert.ToString(e); // This will throw null exception but it will be automatically handled by Convert.ToString() and exception will not be shown on command window.
        }
    }
}
2
Johnny

このコードを書いてコンパイルします。

class Program
{
    static void Main(string[] args)
    {
        int a = 1;
        Console.WriteLine(a.ToString());
        Console.WriteLine(Convert.ToString(a));
    }
}

「リバースエンジニアリング」( ilspy )を使用して、「object.ToString()」と「Convert.ToString(obj)」が正確に1つのことを実行していることがわかります。 infact 'Convert.ToString(obj)'は 'object.ToString()'を呼び出すため、 'object.ToString()'は高速です。

Object.ToStringメソッド

class System.Object
{
    public string ToString(IFormatProvider provider)
    {
        return Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider));
    }
}

Conver.ToStringメソッド

class System.Convert
{
    public static string ToString(object value)
    {
        return value.ToString(CultureInfo.CurrentCulture);
    }
}
0
Senior Vector

Convert.ToString(value)はまずobjを IConvertible にキャストし、次に IFormattable に対応するToString(...)メソッドを呼び出します。代わりに、パラメーター値がnullであった場合、string.Emptyを返します。最後の手段として、他に何も機能しない場合はobj.ToString()を返します。

たとえばConvert.ToString(value)がnullを返す場合、value.ToString()cannullを返すことに注意してください。

。Net参照ソース を参照してください

0

Convert.Tostring()関数はNULLを処理しますが、.ToString()メソッドは処理しません。 こちら にアクセスしてください。

0
user632299

両方の方法を理解するために例を見てみましょう:

int i =0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i)); 

ここでは両方のメソッドを使用して文字列を変換しますが、基本的な違いはConvert関数はNULLを処理しますが、i.ToString()NULL reference exception error.をスローしないため、convertを使用したコーディングは常に安全です。

別の例を見てみましょう:

string s;
object o = null;
s = o.ToString(); 
//returns a null reference exception for s. 

string s;
object o = null;
s = Convert.ToString(o); 
//returns an empty string for s and does not throw an exception.
0
Yogesh Patel