當使用char
數據類型的其它方法有什麼理由應該使用int.TryParse
int.TryParse與用於確定一個char包含一個int
int.TryParse(inputChar.ToString(), NumberStyles.Integer,
CultureInfo.InvariantCulture, out curNum)
與
inputChar - '0'
和檢查,如果結果在0-9
之間?
當使用char
數據類型的其它方法有什麼理由應該使用int.TryParse
int.TryParse與用於確定一個char包含一個int
int.TryParse(inputChar.ToString(), NumberStyles.Integer,
CultureInfo.InvariantCulture, out curNum)
與
inputChar - '0'
和檢查,如果結果在0-9
之間?
這只是關於代碼清晰度。 int.TryParse
明確表示它的意圖 - 如果可能,我想將字符串解析爲數字。這是相對快速和安全的。
如果你發現自己陷入TryParse
s,你總是可以編寫自己的解析。在某些情況下,它可以節省大量的時間。例如,在解析DBF時,我已經完成了這樣的實現,否則會導致從解析字節到字符串以及字符串到int的大量開銷。直接從流轉換爲int節省了大量的分配和時間。
畢竟,如果你不想使用內置方法,爲什麼要使用.NET呢?爲什麼不把所有東西寫在機器代碼中:))
現在問題已經澄清,我願意並且能夠刪除我的評論:-) –
如果你想檢查一個char
是數字你應該使用Char.IsDigit
:
if (Char.IsDigit(inputChar))
{
// ...
}
看起來像包括Ascii'0-9'之外的其他unicode字符,所以我想這取決於OP要求的內容。 –
@MartinSmith:通常它只是用[拉丁-1](http://msdn.microsoft.com/zh-cn/library/ms537495(v = 0))檢查'c> ='0'&& c <='9' vs.85)的.aspx)。 –
'Char.IsDigit('5')'例如是真的。沒有測試過與問題中顯示的'int.parse'是否相同的語義。 –
嘛,兩個原因我總是使用TryParse
0
的字符代碼對於數字來說不是最小的。在這種情況下,'9' - '0' != 9;
。這是一個可能是。而且因爲我懶得谷歌這個我在使用TryParse
:-)這裏的一些例子http://stackoverflow.com/a/16621778/73226 –
@MartinSmith我想知道:如何能你所引用的問題被接受的答案是1068次,但是寫出答案的人只有6371的聲望? –
代表帽。可能這1000票中的很多都是在同一天。 –
能否請你澄清問題的安全方面 - 因爲它讀取,這是很難理解對方的問題 – Charleh
那麼,關於什麼時候你沒有'char',而是一個包含值'192384''的字符串?你會如何減去'0'?此外,雖然這可能在「我們的」文化環境中起作用,但關於不同文化和字符集的事情是,「0」的字符代碼在所有情況下可能不會小於每個其他數字的字符代碼。 –
哦,我明白了。你在談論的情況是它只是一個「字符」而不是一個字符串。 –