2013-12-20 48 views
0
int resultid; 
Int32.TryParse(collection["id"],out resultid); 

的值在未來collection["id"]但resultid表示0爲某些值大於8位數字。所以,我試着用長也是同樣的問題,得到resultid0。可以請建議嗎?爲什麼Int32.Tryparse不能返回正確的值?

+4

什麼是'集[ 「ID」]的值爲'到底是什麼? –

+0

張貼的無法解析將是有益的 – Steve

+0

零是整數默認值,這些值的例子,所以這意味着你是把錯誤的值和的TryParse失敗。這就是爲什麼resultid是0 – wudzik

回答

4

的TryParse返回true或false表示成功。 out參數的值用於解析的值,或者在失敗時使用0。所以:

int value; 
if (Int32.TryParse(someText, out value)) 
{ 
    // Parse successful. value can be any integer 
} 
else 
{ 
    // Parse failed. value will be 0. 
} 

所以,如果你在「0」的通過,將執行第一個塊,而如果你在「壞號」通過將執行第二塊。

1

你沒有提到的使用究竟是什麼collection["id"]但..

Int32.TryParse Method (String, Int32)

此方法返回時,包含了32位有符號整數 相當於包含在數S,如果轉換成功, 或零,如果轉換失敗。

看起來像你的談話失敗,因爲你的collection["id"]是大於Int32.MaxValue但因爲你沒有告訴我們更多的信息,這幾乎是不可能給出確切的答案..

Int64也有TryParse方法,我認爲它可以保持你的價值;

int resultid; 
bool success = Int64.TryParse(collection["id"], out resultid); 
-1
string s1 = "1234"; 
string s2 = "1234.65"; 
string s3 = null; 
string s4 = "123456789123456789123456789123456789123456789"; 


success = Int32.TryParse(s1, out result); //-- success => true; result => 1234 
success = Int32.TryParse(s2, out result); //-- success => false; result => 0 
success = Int32.TryParse(s3, out result); //-- success => false; result => 0 
success = Int32.TryParse(s4, out result); //-- success => false; result => 0 
+0

不錯的例子,但有點上下文會有所幫助 –

相關問題