2013-02-17 69 views
1

我只是試着TryParse,並且是新的C#和只是想了解一切,然後希望最佳實踐...使用的TryParse新手詢問()正確

在語法上這個工程:

double number = Double.Parse(C.ReadLine()); 

TryParse是否僅返回布爾值,如果解析成功則返回true?

當我這樣做:

double number; 
bool b = Double.TryParse(C.ReadLine(), out number); 

number是解析的輸入,從C.ReadLine(),如預期,一切正常。這是如何通常使用TryParse?試圖提高效率,欣賞建議,如this

有關方法歡迎的任何建議,以及嘗試(事情)的在線資源信息。

回答

2

Parse如果成功則返回double值,否則拋出異常。 TryParse將返回一個表示操作成功的布爾值,如果成功,它會填充您傳遞給它的參數out中的解析值。它永遠不會拋出異常。

通常,如果您希望輸入字符串不是有效數字並且您有處理它的邏輯(並顯示錯誤消息),則應該使用TryParse

如果您不希望輸入字符串是除有效雙精度外的任何內容,則應使用Parse

4

當它可能失敗時使用TryParse,並且不希望代碼拋出異常。

例如

if (!Double.TryParse(someinput, out number)) 
{ 
    Console.WriteLine("Please input a valid number"); 
} 
1

唯一differnce是的TryParse不會thow異常,如果它不能解析的兩倍。

這是很方便的,當你想指定一個默認值或者忽略你的代碼的價值

例子:

double number; 
if (Double.TryParse(C.ReadLine(), out number)) 
{ 
    // this is a double so all good 
} 
else 
{ 
    // not a valid double. 
} 

例子:

double number; 
progressBar.Value = Double.TryParse(C.ReadLine(), out number) ? number : 4.0; 
// If number is a valid double, set progressbar, esle set default value of 4.0 

你還問aboy TyrParseEnum,這可以像這樣完成

DayOfWeek fav; 
if (Enum.TryParse<DayOfWeek>(Console.ReadLine(), out fav)) 
{ 
    // parsed 
} 
+0

我已經看到TryParse()與雙重使用,並且我已經看到了一個枚舉上使用Parse()...我想了解如何建立一個枚舉... – Jonny 2013-02-19 19:29:46

+0

該場景是用戶被提示輸入喜歡的日子。 TryParse返回一個布爾值,所以應該可以在if條件中使用,但是當我這樣做時會出現錯誤 DayOfWeek fav; if((DayOfWeek)Enum.TryParse(Console。的ReadLine(),從收藏)){ } 工作分析是在try語句聲明如下 最愛=(星期幾)Enum.Parse(typeof運算(星期幾),到Console.ReadLine()); 我想知道這應該如何轉換爲TryParse()語句,假設它是可能的!無法看到如何使它在語法上有效... – Jonny 2013-02-19 19:32:44

+0

Enum已經有'TryParse'看到我的更新 – 2013-02-19 22:14:38