2010-05-13 87 views
116

之間的區別Convert.ToString().ToString()之間的區別是什麼?Convert.ToString()和.ToString()

我在網上發現了很多差異,但是最大的區別是什麼?

+6

,而不是你說你有在網絡上有許多差異,後來你問只是因爲這個具體原因嗎?你還在網上找到了什麼? – Ryan 2010-05-14 13:57:10

+3

Convert.ToString()有一個允許使用CultureInfo的重載,而.ToString()沒有這樣的重載。 – Artemix 2014-04-29 10:47:33

回答

159

Convert.ToString()手柄null,而ToString()沒有。

+2

不錯..只因爲這個具體原因他們使用。兩種方法? – TinTin 2010-05-13 15:48:01

+0

此外,半相關,請參閱此答案的更多詳細信息:http://stackoverflow.com/questions/496096/casting-vs-using-the-as-keyword-in-the-clr/496167#496167 – JYelton 2010-05-13 15:50:34

+0

更多信息關於使用JustDecompile/Reflector的區別:http://www.kodefuguru.com/post/2011/06/14/Deeper-into-Convert-ToString.aspx – Ubikuity 2012-02-17 17:03:26

45

在對象上調用ToString()假定對象不爲空(因爲對象需要存在才能調用實例方法)。 Convert.ToString(obj)不需要假定對象不爲空(因爲它是Convert類的靜態方法),但是如果它的爲null,將返回String.Empty

+0

var arg = Request.Params.Get(「__ EVENTARGUMENT」); string _arg = Convert.ToString(arg);當arg爲null時,_arg不會回退String.Empty。爲什麼? – Roshe 2012-03-12 03:33:39

+2

@Nilaa您可能想要提出另一個問題,而不是發表評論。我的第一個問題是,當arg爲空時,它會返回什麼?我的第一個想法是「arg」實際上是「string」類型,所以你調用了Convert.ToString(...)的重載,它只是返回你傳遞給它的東西。這個討論是關於該方法的「對象」超負荷。 – 2012-03-12 15:40:34

+3

@Roshe是的,我剛剛得到了這個。 'Convert.ToString(string value)'如果參數爲null,則返回null。 'Convert.ToString(object value)'如果參數爲'null'則返回'String.Empty'。 – 2013-08-29 15:22:06

2

Convert.ToString(),轉換處理或者是NULL值或沒有,但在.ToString()它不處理一個NULL值和NULL參考異常錯誤。所以最好使用Convert.ToString()

9

讓我們明白通過這個例子的區別:

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

我們可以使用i.ToString()Convert.ToString轉換整數i。那有什麼區別?

它們之間的基本區別是Convert函數處理NULLS,而i.ToString()沒有;它會拋出一個NULL引用異常錯誤。因此,使用convert的良好編碼習慣始終是安全的。

2

對於愛好者而言,這是最好的答案。

.............. 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) 
+1

我對你的回答非常滿意。因此+1。謝謝。 – 2013-04-17 10:18:02

4

您可以創建一個類,並重寫toString方法去做任何你想要的。

例如,您可以創建類別「我的郵件」並覆蓋toString方法以發送電子郵件或執行其他操作而不是寫入當前對象。

Convert.toString將指定的值轉換爲其等效的字符串表示形式。

+2

Convert.ToString實際上是一個檢查null的安全方法,如果value不爲null,它只需調用ToString方法就可以了。所以無論如何,如果你有overriden ToString方法,你的overriden ToString方法將被調用。 – ZafarYousafi 2013-02-25 07:32:26

+0

而這種無效安全只有在你處理類時纔有用。值類型不能爲空,所以我們可以安全地調用ToString方法。 – ZafarYousafi 2013-02-25 07:36:43

3
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 
6

除了有關處理null值其他答案,Convert.ToString試圖調用基地Object.ToString前使用IFormattableIConvertible接口。

例子:

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 
+1

這應該被添加到正確的答案,因爲它是相當重要的信息。 – Santhos 2015-12-14 10:00:22

1

ToString()不能處理空值和convert.ToString()能夠處理它們是空值,所以當你想讓你的系統來處理空值使用convert.ToString()

1

該方法「基本上」相同,除了處理null

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

從MSDN:
Convert.ToString Method

指定值爲其等效的字符串表示形式。

Object.ToString

返回表示當前對象的字符串。

+0

「什麼都不打印」?什麼都沒有? 'null',''「''或'」null「'? – weston 2015-12-15 16:54:56

1

Convert.ToString(strName)將處理空值,strName.Tostring()不會處理空值並拋出異常。

所以最好使用Convert.ToString()然後.ToString();

1
ToString() Vs Convert.ToString() 

相似點: -

兩個都用一個特定的類型轉換爲字符串即INT串,浮到字符串或一個字符串的對象。

差異: -

ToString()不能處理空值,而在情況與Convert.ToString()將處理空值。

例子:

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. 
     } 
    } 
} 
+0

'Convert.ToString'不處理'Null異常'。它只是做:'返回值== null? string.Empty:value.ToString()' – Fabio 2017-01-10 17:01:21

1

我@瑞安的答案達成一致。順便說一句,從C#6.0爲這個目的,你可以使用:

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

$"{someString}"; // bad practice, but this is the most concise option 

Convert.ToString(someString); 
相關問題