第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

何時使用ref以及在C#中何時不需要

何時使用ref以及在C#中何時不需要

C#
開心每一天1111 2019-08-12 11:30:21
何時使用ref以及在C#中何時不需要我有一個對象是我在程序的內(nèi)存狀態(tài),還有一些其他的工作函數(shù),我傳遞對象來修改狀態(tài)。我已經(jīng)通過ref傳遞給工人函數(shù)了。但是我遇到了以下功能。byte[] received_s = new byte[2048];IPEndPoint tmpIpEndPoint = new IPEndPoint(IPAddress.Any, UdpPort_msg);EndPoint remoteEP = (tmpIpEndPoint);int sz = soUdp_msg.ReceiveFrom(received_s, ref remoteEP);它混淆了我,因為兩者received_s并remoteEP從函數(shù)返回的東西。為什么remoteEP需要一個ref而received_s不是一個?我也是程序員,所以我有一個問題,我的頭腦中有指針。編輯:看起來C#中的對象是引導(dǎo)下對象的指針。因此,當(dāng)您將對象傳遞給函數(shù)時,您可以通過指針修改對象內(nèi)容,傳遞給函數(shù)的唯一內(nèi)容是指向?qū)ο蟮闹羔?,因此對象本身不會被?fù)制。如果您希望能夠在函數(shù)中切換或創(chuàng)建一個新對象,就像雙指針一樣,則使用ref或out。
查看完整描述

3 回答

?
皈依舞

TA貢獻1851條經(jīng)驗 獲得超3個贊

答案很長:當(dāng)通過值傳遞引用類型參數(shù)時,只傳遞引用,而不是對象的副本。這就像在C或C ++中傳遞指針(按值)。調(diào)用者不會看到對參數(shù)本身值的更改,但看到參考指向的對象的更改。

當(dāng)通過引用傳遞參數(shù)(任何類型)時,這意味著調(diào)用者可以看到對參數(shù)的任何更改 - 對參數(shù)更改是對變量的更改。

文章更詳細地解釋了所有這些,當(dāng)然:)

有用的答案:你幾乎不需要使用ref / out。它基本上是一種獲得另一個返回值的方法,通常應(yīng)該被準確地避免,因為這意味著該方法可能試圖做太多。情況并非總是如此(TryParse等等是合理使用的規(guī)范示例out)但使用ref / out應(yīng)該是相對罕見的。


查看完整回答
反對 回復(fù) 2019-08-12
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

可以將非ref參數(shù)視為指針,將ref參數(shù)視為雙指針。這對我?guī)椭畲蟆?/p>

您幾乎不應(yīng)該通過ref傳遞值。我懷疑,如果不是互操作問題,.Net團隊永遠不會將其包含在原始規(guī)范中。處理ref參數(shù)解決的大多數(shù)問題的OO方法是:

對于多個返回值

  • 創(chuàng)建表示多個返回值的結(jié)構(gòu)

對于作為方法調(diào)用結(jié)果在方法中更改的基元(方法對基本參數(shù)有副作用)

  • 在對象中實現(xiàn)方法作為實例方法,并在方法調(diào)用中操縱對象的狀態(tài)(而不是參數(shù))

  • 使用多重返回值解決方案并將返回值合并到您的狀態(tài)

  • 創(chuàng)建一個包含可由方法操作的狀態(tài)的對象,并將該對象作為參數(shù)傳遞,而不是基元本身。


查看完整回答
反對 回復(fù) 2019-08-12
?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

您可以編寫一個完整的C#應(yīng)用程序,并且不會通過ref傳遞任何對象/結(jié)構(gòu)。

我有一位教授告訴我這件事:

您使用refs的唯一地方是:

  1. 想要傳遞一個大對象(即,對象/結(jié)構(gòu)中有對象/結(jié)構(gòu)到多個級別)并且復(fù)制它會很昂貴,

  2. 您正在調(diào)用Framework,Windows API或其他需要它的API。

不要因為你能做到這一點。如果您開始更改參數(shù)中的值并且沒有引起注意,您可以通過一些令人討厭的錯誤獲得幫助。

我同意他的建議,在學(xué)校開始的五年多時間里,除了調(diào)用Framework或Windows API之外,我從未需要它。


查看完整回答
反對 回復(fù) 2019-08-12
  • 3 回答
  • 0 關(guān)注
  • 1064 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號