2013-03-03 75 views
0

在C#中Convert.ToInt32()和Convert類的任何方法都可以處理空值,但所有這些方法都不處理「」作爲輸入。引發錯誤「輸入的字符串格式不正確」 有沒有辦法處理/轉換「」爲其特定的值?像如何在C#中處理/轉換「」#

Convert.ToInt32("") convert to 0 
Convert.ToDecimal("") convert to 0.0 

與出使用if條件

感謝。

+0

不是我所知道的。這些方法意味着需要一個可以解析的數字 - 一個空字符串不是。 – Gigi 2013-03-03 19:15:28

+0

http://msdn.microsoft.com/en-us/library/f02979c7.aspx – Ofiris 2013-03-03 19:16:03

回答

3

的POD類在C#中有一種方法只是爲了這個原因:

Int32.TryParse

你甚至可以編寫擴展方法,使這個您更容易:

public static class Extensions { 
    public static decimal MyDecimalParse(this string val) { 
     decimal ret = decimal.Zero; 
     decimal.TryParse(val, out ret); 
     return ret; 
    } 
} // eo class extension 
+1

你可以進一步改進它以傳遞​​默認值(其本身可以默認爲0)。這將使OP可以靈活地更改每次轉換的默認值。 – James 2013-03-03 19:51:51

0

沒有任何在爲你做這件事的框架中固有的東西。整個社區理解爲「0」或「0.0」是沒有意義的。我會建議編寫你自己的方法,做你想要的東西。

某事的效果:

public class MyConvert 
{ 
    public static int ToInt32(string input) 
    { 
     return String.IsNullOrEmpty(input) ? 0 : Convert.ToInt32(input); 
    } 
} 

我知道你不想做的,如果檢查,但你必須檢查這種或那種方式(通過檢查.IsNullOrEmpty或.TryParse) ,所以將它抽象爲你自己的轉換方法至少意味着你不必每次都這樣做。