回答
Convert.ToString()
手柄null
,而ToString()
沒有。
不錯..只因爲這個具體原因他們使用。兩種方法? – TinTin 2010-05-13 15:48:01
此外,半相關,請參閱此答案的更多詳細信息:http://stackoverflow.com/questions/496096/casting-vs-using-the-as-keyword-in-the-clr/496167#496167 – JYelton 2010-05-13 15:50:34
更多信息關於使用JustDecompile/Reflector的區別:http://www.kodefuguru.com/post/2011/06/14/Deeper-into-Convert-ToString.aspx – Ubikuity 2012-02-17 17:03:26
在對象上調用ToString()
假定對象不爲空(因爲對象需要存在才能調用實例方法)。 Convert.ToString(obj)
不需要假定對象不爲空(因爲它是Convert類的靜態方法),但是如果它的爲爲null,將返回String.Empty
。
var arg = Request.Params.Get(「__ EVENTARGUMENT」); string _arg = Convert.ToString(arg);當arg爲null時,_arg不會回退String.Empty。爲什麼? – Roshe 2012-03-12 03:33:39
@Nilaa您可能想要提出另一個問題,而不是發表評論。我的第一個問題是,當arg爲空時,它會返回什麼?我的第一個想法是「arg」實際上是「string」類型,所以你調用了Convert.ToString(...)的重載,它只是返回你傳遞給它的東西。這個討論是關於該方法的「對象」超負荷。 – 2012-03-12 15:40:34
@Roshe是的,我剛剛得到了這個。 'Convert.ToString(string value)'如果參數爲null,則返回null。 'Convert.ToString(object value)'如果參數爲'null'則返回'String.Empty'。 – 2013-08-29 15:22:06
在Convert.ToString()
,轉換處理或者是NULL
值或沒有,但在.ToString()
它不處理一個NULL
值和NULL
參考異常錯誤。所以最好使用Convert.ToString()
。
讓我們明白通過這個例子的區別:
int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
我們可以使用i.ToString()
或Convert.ToString
轉換整數i
。那有什麼區別?
它們之間的基本區別是Convert
函數處理NULLS,而i.ToString()
沒有;它會拋出一個NULL引用異常錯誤。因此,使用convert
的良好編碼習慣始終是安全的。
對於愛好者而言,這是最好的答案。
.............. 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。謝謝。 – 2013-04-17 10:18:02
您可以創建一個類,並重寫toString
方法去做任何你想要的。
例如,您可以創建類別「我的郵件」並覆蓋toString
方法以發送電子郵件或執行其他操作而不是寫入當前對象。
Convert.toString
將指定的值轉換爲其等效的字符串表示形式。
Convert.ToString實際上是一個檢查null的安全方法,如果value不爲null,它只需調用ToString方法就可以了。所以無論如何,如果你有overriden ToString方法,你的overriden ToString方法將被調用。 – ZafarYousafi 2013-02-25 07:32:26
而這種無效安全只有在你處理類時纔有用。值類型不能爲空,所以我們可以安全地調用ToString方法。 – ZafarYousafi 2013-02-25 07:36:43
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
除了有關處理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
這應該被添加到正確的答案,因爲它是相當重要的信息。 – Santhos 2015-12-14 10:00:22
ToString()
不能處理空值和convert.ToString()
能夠處理它們是空值,所以當你想讓你的系統來處理空值使用convert.ToString()
。
該方法「基本上」相同,除了處理null。
Pen pen = null;
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException
從MSDN:
Convert.ToString Method
指定值爲其等效的字符串表示形式。
返回表示當前對象的字符串。
「什麼都不打印」?什麼都沒有? 'null',''「''或'」null「'? – weston 2015-12-15 16:54:56
Convert.ToString(strName)
將處理空值,strName.Tostring()
不會處理空值並拋出異常。
所以最好使用Convert.ToString()
然後.ToString();
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.
}
}
}
'Convert.ToString'不處理'Null異常'。它只是做:'返回值== null? string.Empty:value.ToString()' – Fabio 2017-01-10 17:01:21
我@瑞安的答案達成一致。順便說一句,從C#6.0爲這個目的,你可以使用:
someString?.ToString() ?? string.Empty;
或
$"{someString}"; // bad practice, but this is the most concise option
的
Convert.ToString(someString);
- 1. C#中Convert.ToString()和.ToString()之間的區別?
- 2. c#中的Convert.ToString()和.ToString()方法#
- 3. 「Convert.ToString(Nullable <int>)」和「Nullable <int> .ToString()」之間的區別?
- 4. ToString()和Convert.ToString()之間的基本區別是什麼?
- 5. 在C#中使用Visual Studio替換().ToString()與Convert.ToString()
- 6. 從convert.tostring()
- 7. 轉換爲Convert.ToString()與.ToString()之間的字符串時,是否有區別?
- 8. variable.ToString()與Convert.ToString(變量)
- 9. C#Convert.ToString(「D2」,Dropdownlist value)
- 10. 爲什麼Convert.ToString的(對象爲空)與Convert.ToString
- 11. ArrayList和toString
- 12. 的Object.create()和toString()
- 13. Siphash tostring和getBytes()
- 14. ToString(「N2」)和ToString(「0.00」)之間的區別
- 15. (1)的ToString()和1.toString()內的Javascript
- 16. 性能的Convert.ToString(...)或Object.ToString()
- 17. Convert.ToString構建時錯誤
- 18. toString和布爾值
- 19. 什麼的ToString()和「
- 20. 100.toString vs 100 ['toString']
- 21. ToString(「0」)與ToString(CultureInfo.InvariantCulture)
- 22. Convert.ToString方法和Object.ToString()在全球化方面的區別
- 23. Label.Text/Convert.ToString和幫助的String.Format /千位分隔符
- 24. 添加2位小數到Convert.ToString
- 25. 爲什麼Convert.ToString((sbyte)-128,2)預先加1?
- 26. 擴展Convert.ToString()來墊二進制輸出
- 27. (串)閱讀器[0] VS Convert.ToString(閱讀[0])
- 28. 爲Unicode和ANSI重載toString
- 29. ToString()和.replace在一行中?
- 30. 具有Java編程和toString()
,而不是你說你有在網絡上有許多差異,後來你問只是因爲這個具體原因嗎?你還在網上找到了什麼? – Ryan 2010-05-14 13:57:10
Convert.ToString()有一個允許使用CultureInfo的重載,而.ToString()沒有這樣的重載。 – Artemix 2014-04-29 10:47:33