2014-11-24 32 views
1

只是好奇:如何處理從對象轉換爲字符串時的空異常?

這些線扔Invalid Cast ExceptionUnable to cast object of type 'System.Double' to type 'System.String'.

Object obj = new object(); 
obj = 20.09089; 
string value = (string)obj; 

我收到從libraryobj值。

如何簡單地轉換爲string當我們不知道枚舉時object的類型?

+0

除了回答,請注意,有(串)obj''之間的差異和'obj.ToString()'... – 2014-11-24 13:41:30

+0

只需使用'string value = obj.ToString();' – 2014-11-24 13:42:18

+0

@SriramSakthivel - 在這種情況下,是的。但由於標題中存在「空例外」,因此可能還必須考慮到「obj」可能爲「空」。 – Corak 2014-11-24 13:45:25

回答

5

,這就是爲什麼在.net中的每個對象都有ToString()方法(從Object繼承)

string str = (obj == null) ? string.Empty : obj.ToString(); 
+0

很棒的回答。順便說一句,我現在使用'Convert.ToString()'而不是'.ToString()',因爲前者可以處理空值:) – 2014-11-25 06:08:36

2

這是boxing/unboxing問題。

20.09089默認爲double。當您想從object中取出一個原始類型時,您需要先取消它的原始類型

Object obj = new object(); 
obj = 20.09089; 
string value = ((double)obj).ToString(); 

或簡化;

Object obj = new object(); 
obj = 20.09089; 
string value = obj.ToString(); 
+1

這是多餘的,只需使用'obj.ToString' – 2014-11-24 13:41:22

+2

@SriramSakthivel沒錯。我只想指出OP_can't_爲什麼直接在我的答案中作爲'(string)obj'進行字符串轉換,而不是如何獲得它的字符串表示。但我添加到我的答案。謝謝。 – 2014-11-24 13:45:33

相關問題