2011-02-15 44 views
1

我想字符串轉換爲加倍(很基本的問題,不是嗎?)C#>字符串轉換爲加倍時,輸入=「」

string input = "45.00000"; 
double numberd = Double.Parse(input, CultureInfo.InvariantCulture); 

=>我的代碼工作,我感到非常高興。

不過,我可能有以下

string input = ""; 
double numberd = Double.Parse(input, CultureInfo.InvariantCulture); 

在這種情況下,我的代碼不能正常工作,我得到一個異常錯誤;( 我不知道如何可以管理這種情況理想情況下,當我得到這個我會喜歡有我的變量數列等於空。

誰能幫助我? THX

回答

3

使用Double用於解析,但Double?存儲的價值,也許?

Double number; 
string input = ""; // just for demo purpose, naturally ;o) 
Double? nullableNumber = 
    Double.TryParse(input, NumberStyles.Any, CultureInfo.InvariantCulture, out number) 
    ? (Double?)number 
    : null; 

// use nullableNumber 
+0

+1打我吧... – 2011-02-15 23:06:40

+0

的作品非常好,THX你 – terry 2011-02-15 23:13:11

0

添加if語句比較字符串或環繞嘗試/ catch塊。

5

微軟建議使用Tester-Doer模式如下:

string input = ""; 
double numberd; 
if(Double.TryParse(input, out numberd)) 
{ 
    // number parsed! 
} 
1

原始類型,如double不能爲空。您可以使用double?的可空版本,但Double.Parse不返回double?(只是一個普通的double)。

您可以使用Double.TryParse並檢查退貨條件並將double?設置爲null,如果這樣會更好。

1

爲什麼不只是捕捉異常並設置變量?

double numberd; 
try { 
    numberd = Double.Parse(input, CultureInfo.InvariantCulture); 
} catch (System.FormatException e) 
    numberd = 0.0; 
} 

或者,你可以使用Double.TryParse

0

假設你不擔心,除了空字符串其他無效值,這裏有一個簡單的一行:

Double? numberd = (input.Length == 0) ? null : (Double?)Double.Parse(input, CultureInfo.InvariantCulture); 

mzabsky是在正確的道路上,但是他的解決方案將無法建立和你不應該硬編碼空字符串 - 最好檢查一個字符串的長度。

0

如何

Double? numberd = String.IsNullOrEmpty(str) ? null : Double.Parse(str)

在我的申請,我解析CSV文件,我想這些空字符串爲零,所以我返回0.0,而不是空,這一切都很好。

5個