Arasındaki fark nedir Convert.ToString()
ve .ToString()
?
Çevrimiçi olarak birçok fark buldum, ancak en büyük fark nedir?
Arasındaki fark nedir Convert.ToString()
ve .ToString()
?
Çevrimiçi olarak birçok fark buldum, ancak en büyük fark nedir?
Yanıtlar:
Convert.ToString()
kolları null
, ancak ToString()
değil.
null
istisna boş bir dize döndürür veya atmak? Bu, döküm ve kullanma arasındaki fark gibidir as
: sessiz dönüşüm.
ToString()
Bir nesneyi çağırmak , nesnenin boş olmadığını varsayar (çünkü bir nesne üzerinde bir örnek yöntemini çağırmak için var olması gerekir). Convert.ToString(obj)
(Bu dönüştürme sınıfı statik bir yöntemdir gibi), ancak bunun yerine dönecektir nesneyi tahmin gerekmez boş değil String.Empty
o takdirde ise boş.
Convert.ToString(string value)
döndürür . argüman ise döndürür . null
null
Convert.ToString(object value)
String.Empty
null
null
Değerleri işlemeyle ilgili diğer yanıtlara ek olarak , base çağırmadan önce Convert.ToString
kullanmaya IFormattable
ve IConvertible
arabirimlere çalışır Object.ToString
.
Misal:
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();
}
}
Sonuç:
Convert.ToString(new FormattableType()); // 0.42
new FormattableType().ToString(); // 0,42
IConvertible
önceliklidir IFormattable
sırayla önceliklidir hangi Object.ToString()
uygulanması.
Farkı bu örnekle anlayalım:
int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
Biz tamsayı dönüştürebilirsiniz i
kullanarak i.ToString ()
veya Convert.ToString
. Peki fark nedir?
Aralarındaki temel fark, Convert
NULLS işlevini yerine getirmeyen işlevdir i.ToString ()
; bir NULL referans istisna hatası atar. Böylece iyi kodlama uygulamaları kullanmak convert
her zaman güvenlidir.
İstediğiniz her toString
şeyi yapmak için bir sınıf oluşturabilir ve yöntemi geçersiz kılabilirsiniz .
Örneğin, "MyMail" sınıfı oluşturabilir toString
ve geçerli nesneyi yazmak yerine bir e-posta gönderme veya başka bir işlem yapma yöntemini geçersiz kılabilirsiniz .
Convert.toString
Eşdeğer dize gösterimine belirtilen değere dönüştürür.
Yöntemler, null kullanımı dışında , "temel olarak" aynıdır .
Pen pen = null;
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException
MSDN'den:
Convert.ToString Yöntemi
Belirtilen değeri eşdeğer dize temsiline dönüştürür.
Geçerli nesneyi temsil eden bir dize döndürür.
null
, ""
veya "null"
?
Gelen Convert.ToString()
, dönüştürme kolları bir ya NULL
değer ya da değil ama .ToString()
bir işler gelmez NULL
değeri ve bir NULL
referans durum hata. Bu yüzden kullanmak iyi bir uygulamadır Convert.ToString()
.
Kod severler için bu en iyi cevaptır.
.............. 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)
@ Ryan'ın cevabına katılıyorum . Bu arada, bu amaç için C # 6.0 ile başlayarak şunları kullanabilirsiniz:
someString?.ToString() ?? string.Empty;
veya
$"{someString}"; // I do not recommend this approach, although this is the most concise option.
onun yerine
Convert.ToString(someString);
Convert.ToString(strName)
null değerlerini strName.Tostring()
işleyecek ve null değeri işlemeyecek ve bir istisna atmayacaktır.
Bu yüzden kullanmak Convert.ToString()
daha iyidir.ToString();
ToString() Vs Convert.ToString()
Benzerlikler: -
Her ikisi de belirli bir türü dizeye dönüştürmek için kullanılır; örneğin int, string, float to string veya bir nesneyi string olarak.
Fark: -
ToString()
Convert.ToString()
boş değer işlenirken boş değer işlenemez.
Misal :
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
idare etmeyin Null Exception
. basitçe yapar:return value == null ? string.Empty : value.ToString()
Her iki yöntemi de anlamak için bir örnek verelim:
int i =0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
Burada her iki yöntem de dizeyi dönüştürmek için kullanılır, ancak aralarındaki temel fark şudur: Convert
işlev tutamaçları NULL
, i.ToString()
atmazken NULL reference exception error.
iyi bir kodlama uygulaması kullanmak convert
her zaman güvenlidir.
Başka bir örnek görelim:
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)
için obj döküm ilk çalışır IConvertible ardından IFormattable gelen aramaya ToString(...)
yöntemleri. Bunun yerine parametre değeri null
döndürüldü string.Empty
. Son çare olarak, obj.ToString()
başka hiçbir şey işe yaramadı dönmek .
Belirterek It değerinde Convert.ToString(value)
olabilir dönmek null
örnek için eğer value.ToString()
döner boş.
Net referans kaynağına bakın
bu kodu yazdım ve derledim.
class Program
{
static void Main(string[] args)
{
int a = 1;
Console.WriteLine(a.ToString());
Console.WriteLine(Convert.ToString(a));
}
}
'tersine mühendislik' ( ilspy ) kullanarak ' object.ToString ()' ve 'Convert.ToString (obj)' tam olarak bir şey bulmak. infact 'Convert.ToString (obj)' call 'object.ToString ()' yani 'object.ToString ()' daha hızlıdır.
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);
}
}
C # 'da bir dize değişkeni bildirirseniz ve bu değişkene herhangi bir değer atamazsanız, varsayılan olarak bu değişken boş değer alır. Böyle bir durumda, ToString () yöntemini kullanırsanız, programınız null başvuru istisnasını atar. Öte yandan, Convert.ToString () yöntemini kullanırsanız, programınız bir istisna atmaz.
Convert.Tostring()
temel olarak sadece aşağıdakileri çağırır value == null ? String.Empty: value.ToString()
(string)variable
Sadece edecek döküm bir olduğunda örtülü veya açık yayınlıyordunuz ne üzerinde operatör
ToString()
tür tarafından geçersiz kılınabilir (ne yaptığı üzerinde kontrolü vardır), değilse türün adıyla sonuçlanır
Açıkçası bir nesne null ise , örnek üyeye erişemezsiniz ToString()
, bu bir istisnaya neden olur
Convert.Tostring () işlevi, NULL işlevini işlerken .ToString () yöntemi çalışmaz. burayı ziyaret edin .