3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
它們幾乎是一樣的 - 唯一的區(qū)別是你作為out參數(shù)傳遞的變量不需要初始化,但是將它作為ref參數(shù)傳遞它必須設(shè)置為某個(gè)東西。
int x;
Foo(out x); // OK
int y;
Foo(ref y); // Error: y should be initialized before calling the method
Ref參數(shù)用于可能被修改out的數(shù)據(jù),參數(shù)用于數(shù)據(jù),該數(shù)據(jù)int.TryParse是已經(jīng)使用某些東西的返回值的函數(shù)(例如)的附加輸出。

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
取出參數(shù)的方法的調(diào)用者不需要分配給在調(diào)用之前作為out參數(shù)傳遞的變量; 但是,被調(diào)用者需要在返回之前分配out參數(shù)。
相比之下,ref參數(shù)被認(rèn)為最初由呼叫者分配。因此,被調(diào)用者在使用之前不需要分配給ref參數(shù)。Ref參數(shù)傳入和傳出方法。
所以,out
意味著,而ref
不是進(jìn)出。
這些與COM接口的參數(shù)[out]
和[in,out]
參數(shù)緊密對(duì)應(yīng),參數(shù)的優(yōu)點(diǎn)是,在out
被調(diào)用的方法不需要的情況下,調(diào)用者不需要傳遞預(yù)先分配的對(duì)象 - 這既避免了分配成本,又避免了任何成本可能與編組有關(guān)(更可能與COM有關(guān),但在.NET中并不罕見(jiàn))。
- 3 回答
- 0 關(guān)注
- 1339 瀏覽
添加回答
舉報(bào)