違いは何であるConvert.ToString()
とは.ToString()
?
オンラインで多くの違いを見つけましたが、主な違いは何ですか?
違いは何であるConvert.ToString()
とは.ToString()
?
オンラインで多くの違いを見つけましたが、主な違いは何ですか?
回答:
Convert.ToString()
は処理しますがnull
、処理しToString()
ません。
null
空の文字列を返すか、例外をスローしますか?キャストと使用の違いのようなものですas
:サイレント変換。
ToString()
オブジェクトを呼び出すと、そのオブジェクトはnullでないと見なされます(インスタンスメソッドを呼び出すにはオブジェクトが存在する必要があるため)。Convert.ToString(obj)
ヌル(それは変換クラスの静的メソッドであるとして)ではありませんが、代わりに返されたオブジェクトを推定する必要はありませんString.Empty
、それは場合ではnull。
Convert.ToString(string value)
戻ります。 引数がの場合に戻ります。null
null
Convert.ToString(object value)
String.Empty
null
null
値の処理に関する他の回答に加えて、baseを呼び出す前におよびConvert.ToString
を使用しようとします。IFormattable
IConvertible
Object.ToString
例:
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
を使用して整数を変換できます。違いは何ですか?i.ToString ()
Convert.ToString
それらの間の基本的な違いは、Convert
関数がNULLSを処理する一方で処理i.ToString ()
しないことです。NULL参照例外エラーがスローされます。したがって、適切なコーディングの実践convert
は常に安全です。
クラスを作成してtoString
メソッドをオーバーライドし、必要な処理を実行できます。
たとえば、クラス「MyMail」を作成し、toString
メソッドをオーバーライドして、現在のオブジェクトを書き込む代わりに、メールを送信したり、その他の操作を実行したりできます。
はConvert.toString
、指定された値を同等の文字列表現に変換します。
メソッドは「基本的に」同じですが、null を処理する点が異なります。
Pen pen = null;
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException
MSDNから:
Convert.ToStringメソッド
指定された値を同等の文字列表現に変換します。
現在のオブジェクトを表す文字列を返します。
null
、""
または"null"
?
コード愛好家にとって、これが最良の答えです。
.............. 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(strName)
ヌル可能な値を処理すると、strName.Tostring()
NULL値を処理し、例外をスローしません。
使用することをお勧めしますそれはそうConvert.ToString()
そして、.ToString();
ToString() Vs Convert.ToString()
類似点:-
どちらも特定の型を文字列に変換するために使用されます。つまり、intから文字列、floatから文字列、またはオブジェクトから文字列に変換します。
違い:-
ToString()
がConvert.ToString()
null値を処理する場合は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.
}
}
}
Convert.ToString
扱いませんNull Exception
。それは単に行います:return value == null ? string.Empty : value.ToString()
両方の方法を理解するために、例を見てみましょう:
int i =0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
ここでは両方のメソッドが文字列の変換に使用されていますが、それらの基本的な違いは次のとおりです:Convert
関数ハンドルNULL
、i.ToString()
それはスローされませんNULL reference exception error.
Soを使用する優れたコーディング実践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.
Convert.ToString(value)
OBJキャスト最初の試みIConvertibleは、その後、IFormattable対応呼び出すためのToString(...)
方法を。代わりにパラメータ値がnull
返された場合string.Empty
。最後の手段として、obj.ToString()
他に何も機能しない場合は返却してください。
たとえばnull Convert.ToString(value)
が返されたnull
場合にvalue.ToString()
返される可能性があることに注意してください。
.Netリファレンスソースを参照してください
私はこのコードを書いてコンパイルしました。
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つのことを行うことを確認します。実際には '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);
}
}