คำถามติดแท็ก ref

26
ความแตกต่างระหว่างคำหลัก 'อ้างอิง' และ 'ออก' คืออะไร
ฉันกำลังสร้างฟังก์ชั่นที่ฉันต้องผ่านวัตถุเพื่อให้สามารถแก้ไขได้โดยฟังก์ชั่น อะไรคือความแตกต่างระหว่าง: public void myFunction(ref MyClass someClass) และ public void myFunction(out MyClass someClass) ฉันควรใช้แบบใดและเพราะเหตุใด
891 c#  reference  keyword  out  ref 

11
การกำหนดพารามิเตอร์ out / ref ใน Moq
เป็นไปได้ไหมที่จะกำหนดพารามิเตอร์out/ refโดยใช้ Moq (3.0+)? ฉันดูที่การใช้งานCallback()แล้ว แต่Action<>ไม่รองรับพารามิเตอร์การอ้างอิงเพราะเป็นข้อมูลทั่วไป ฉันควรเลือกวางข้อ จำกัด ( It.Is) ลงในอินพุตของrefพารามิเตอร์แม้ว่าฉันสามารถทำได้ในการโทรกลับ ฉันรู้ว่า Rhino Mocks รองรับฟังก์ชั่นนี้ แต่โครงการที่ฉันกำลังใช้งานอยู่ใช้ Moq อยู่แล้ว
293 c#  parameters  moq  ref  out 

11
เหตุใดจึงต้องใช้คำหลัก 'อ้างอิง' เมื่อส่งผ่านวัตถุ
หากฉันส่งวัตถุไปยังวิธีการเหตุใดฉันจึงควรใช้คำหลักอ้างอิง นี่ไม่ใช่พฤติกรรมเริ่มต้นใช่หรือไม่ ตัวอย่างเช่น: class Program { static void Main(string[] args) { TestRef t = new TestRef(); t.Something = "Foo"; DoSomething(t); Console.WriteLine(t.Something); } static public void DoSomething(TestRef t) { t.Something = "Bar"; } } public class TestRef { public string Something { get; set; } } ผลลัพธ์คือ "บาร์" ซึ่งหมายความว่าวัตถุถูกส่งผ่านเป็นการอ้างอิง

8
เมื่อใดควรใช้การอ้างอิงและเมื่อไม่จำเป็นใน C #
ฉันมีวัตถุที่อยู่ในสถานะหน่วยความจำของโปรแกรมและยังมีฟังก์ชันอื่น ๆ ของผู้ปฏิบัติงานที่ฉันส่งผ่านวัตถุไปเพื่อแก้ไขสถานะ ฉันได้รับการส่งผ่านโดยอ้างถึงหน้าที่ของผู้ปฏิบัติงาน อย่างไรก็ตามฉันเจอฟังก์ชันต่อไปนี้ 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กำลังส่งคืนสิ่งต่างๆจากฟังก์ชัน ทำไมremoteEPต้องมีrefและreceived_sไม่? ฉันเป็นโปรแกรมเมอร์ ac ด้วยดังนั้นฉันจึงมีปัญหาในการดึงตัวชี้ออกจากหัว แก้ไข: ดูเหมือนว่าวัตถุใน C # เป็นตัวชี้ไปยังวัตถุที่อยู่ใต้ฝากระโปรง ดังนั้นเมื่อคุณส่งผ่านวัตถุไปยังฟังก์ชันคุณสามารถแก้ไขเนื้อหาของวัตถุผ่านตัวชี้และสิ่งเดียวที่ส่งผ่านไปยังฟังก์ชันคือตัวชี้ไปยังวัตถุเพื่อไม่ให้วัตถุนั้นถูกคัดลอก คุณใช้ ref หรือ out ถ้าคุณต้องการให้สามารถสลับออกหรือสร้างวัตถุใหม่ในฟังก์ชันซึ่งเปรียบเสมือนตัวชี้คู่
104 c#  ref 

3
C ++ ความแตกต่างระหว่าง std :: ref (T) และ T &?
ฉันมีคำถามเกี่ยวกับโปรแกรมนี้: #include <iostream> #include <type_traits> #include <functional> using namespace std; template <typename T> void foo ( T x ) { auto r=ref(x); cout<<boolalpha; cout<<is_same<T&,decltype(r)>::value; } int main() { int x=5; foo (x); return 0; } ผลลัพธ์คือ: false ฉันอยากรู้ว่าถ้าstd::refไม่ส่งคืนการอ้างอิงของวัตถุมันจะทำอย่างไร โดยทั่วไปความแตกต่างระหว่าง: T x; auto r = ref(x); และ T x; T &y …
92 c++  reference  ref 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.