有點這個question,詢問有關out
參數的行爲,但更集中,爲什麼這些TryParse
方法使用out
,而不是ref
的背面。爲什麼的TryParse方法使用一個輸出參數,而不是一個裁判
在解析之前,您確實想要爲參數初始化一個值,並在解析失敗時保留該值,但並不真正關心它是否失敗。但由於out
參數的值重置。
這種情況可能是這樣的......
int arg = 123;
Int32.TryParse(someString, ref arg);
但是因爲out
參數,我們必須把它寫這樣的,這是比較詳細的...
int arg;
if(!Int32.TryParse(someString, out arg)
{
arg = 123;
}
我知道的知道解析失敗可能是非常有用的,但使用ref
並不排除這一點。
那麼爲什麼這些TryParse方法使用out
而不是ref
?
此外,爲什麼沒有'T TryParse(字符串值)',如果解析失敗就返回'default(T)'? – 2012-02-29 01:03:55
@BennorMcCarthy:因爲你無法區分'「0」'和'「o」'。 – SLaks 2012-02-29 01:05:37
@BennorMcCarthy:因爲那麼你不能區分這兩者:「0」(成功解析爲0)和「蘋果」(解析失敗,默認爲0)。 – 2012-02-29 01:06:15