C tryparse為什麼是out不是ref?

時間 2021-06-08 16:39:01

1樓:

因為TryParse函式本身返回的是布林值,而且傳入的第2個引數就是指示是否轉換成功的值。

這個函式多用在判斷中。要說使用函式簽名用out,我想更多的是封裝性吧,畢竟ref需要在外面初始化。

Console

.Write

("Enter your name:"

);string

firstName

=Console

.ReadLine

();Console

.Write

("Enter your age:"

);string

ageText

=Console

.ReadLine

();if

(int

.TryParse

(ageText

,out

intage

))! Your are years old."

,firstName

,age

);Console

.ReadLine

();}

else

2樓:Python與演算法社群

C#.net中Parse和TryParse是2個不同版本,之所以有2個版本,是因為前者丟擲異常,後乙個不丟擲異常,拋異常會影響效能,

微軟為了消除異常影響,特意提出了一種模式:Tester-Doer模式

可以參考

C# 架構中異常 (Except) 設計準則 1

在這個背景下,才有了TryParse這個版本,而它的返回值正是標記行為正常與否,而引數out正是在函式體內才去計算求得的,所以用Out,如果用ref,那麼你在使用前必須給a賦值,這是多餘的。

可以參考ref 和out的區別

C#: in ,out, ref 使用分析

DateTime.Parse 和 DateTime.TryParse

另外乙個例子:

ContainsKey(TKey) <-> containsKey(K),Item[TKey] <-> get(K),還有乙個利用了out引數的額外方法:TryGetValue:

Dictionary(TKey, TValue).TryGetValue Method (TKey, TValue) (System.Collections.Generic)

public bool TryGetValue(

TKey key,

out TValue value

)ParameterskeyType: TKey

The key of the value to get.

valueType: TValue

When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. This parameter is passed uninitialized.

Return ValueType: System.Boolean

trueif the Dictionary contains an element with the specified key; otherwise,false.

漢語拼音ou中的「o」發什麼音呢?

貓嗅狗 我將普通話韻母ou的音標標記為eu,當中的e是乙個中開口的方口音 長方口 是介母音,弱讀,當中的u是小開口的圓口音,是主母音,重讀。貓嗅狗 普通話發音原理 14 復母音 介母音 主母音結構 漢言 ou的單獨發音 首先是弱子音 喉塞 開頭,接著是除阻發介母音e,最後是主母音ou。介音e遠比做為...

我為什麼是我?為什麼?

主角戲 馬克思說過,人是所有社會關係的總和,所以首先,你作為人來說,你只是你周圍所有關係的總和,你的偏執,你的瘋狂,你的愛情,你的孝順,你的所有人生觀,價值觀,世界觀,宇宙觀,形成了你。但是你錯誤的把這些當成了你,其實這些都是人的錯誤認識,心 的本體,也就是能生萬物,能生萬法的這個東西沒有被發現之前...

為什麼是 money is hard to make,而不是 made?

笑得有點兒野 Money is hard to make It is hard to make money To make money is hard. 魚子醬 因為這裡的用法是動詞不定式,掙錢是困難的,在這裡,掙錢的人是主語,錢是賓語,所以謂語用主動形式而非被動,人是主動去掙錢的。 李勇 個人理解...