Convert.ToString()
と.ToString()
の違いは何ですか?
オンラインで多くの違いを見つけましたが、大きな違いは何ですか?
Convert.ToString()
はnull
を処理しますが、ToString()
は処理しません。
オブジェクトでToString()
を呼び出すと、オブジェクトがnullではないことを前提とします(オブジェクトがインスタンスメソッドを呼び出すにはオブジェクトが存在する必要があるため)。 Convert.ToString(obj)
は(Convertクラスの静的メソッドであるため)オブジェクトがnullでないと仮定する必要はありませんが、代わりにis nullの場合はString.Empty
を返します。
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
この例を介して違いを理解しましょう:
int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
i.ToString ()
またはConvert.ToString
を使用して、整数i
を変換できます。それで、違いは何ですか?
それらの基本的な違いは、Convert
関数がNULLを処理するのに対し、i.ToString ()
は処理しないことです。 NULL参照例外エラーがスローされます。したがって、convert
を使用したコーディングの実践は常に安全です。
クラスを作成し、toString
メソッドをオーバーライドして、必要な処理を実行できます。
たとえば、クラス"MyMail"を作成し、toString
メソッドをオーバーライドして、現在のオブジェクトを書き込む代わりに電子メールを送信したり、他の操作を実行したりできます。
Convert.toString
は、指定された値を同等の文字列表現に変換します。
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
メソッドは「基本的に」同じです。except処理null。
Pen pen = null;
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException
MSDNから:
Convert.ToStringメソッド
指定された値を同等の文字列表現に変換します。
現在のオブジェクトを表す文字列を返します。
コード愛好家にとってこれが最良の答えです。
.............. 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)
Convert.ToString()
では、変換はNULL
値を処理するかどうかを処理しますが、.ToString()
ではNULL
値とNULL
参照例外エラーを処理しません。したがって、Convert.ToString()
を使用することをお勧めします。
@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);
Convert.ToString(strName)
はnull値を処理し、strName.Tostring()
はnull値を処理せず、例外をスローします。
したがって、Convert.ToString()
を使用してから.ToString();
を使用することをお勧めします
ToString()
はnull値を処理できず、convert.ToString()
はnull値を処理できるため、システムでnull値を処理するにはconvert.ToString()
を使用します。
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.
}
}
}
このコードを書いてコンパイルします。
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()'は高速です。
class System.Object
{
public string ToString(IFormatProvider provider)
{
return Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider));
}
}
class System.Convert
{
public static string ToString(object value)
{
return value.ToString(CultureInfo.CurrentCulture);
}
}
Convert.ToString(value)
はまずobjを IConvertible にキャストし、次に IFormattable に対応するToString(...)
メソッドを呼び出します。代わりに、パラメーター値がnull
であった場合、string.Empty
を返します。最後の手段として、他に何も機能しない場合はobj.ToString()
を返します。
たとえばConvert.ToString(value)
がnullを返す場合、value.ToString()
canはnull
を返すことに注意してください。
。Net参照ソース を参照してください
Convert.Tostring()関数はNULLを処理しますが、.ToString()メソッドは処理しません。 こちら にアクセスしてください。
両方の方法を理解するために例を見てみましょう:
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.