แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างการอ้างอิงและการออกใน C #

“ Ref” และ“ Out” เป็นโมเดอเรเตอร์พารามิเตอร์ที่ใช้ใน C # ใช้ ref และ out คุณสามารถส่งค่าชนิดใดก็ได้โดยอ้างอิงจากวิธีการใดก็ได้ เหตุผลของการส่งค่าประเภทใด ๆ โดยการอ้างอิงของมันแนะนำความแตกต่างที่สำคัญระหว่างคำหลักอ้างอิงและออก คำหลัก อ้างอิง ช่วยให้วิธีการที่เรียกว่าเพื่อแก้ไขเนื้อหาของการโต้แย้งผ่านไปด้วยคำหลักอ้างอิง คีย์เวิร์ด out อนุญาตให้เมธอดที่เรียกคืนค่ามากกว่าหนึ่งค่าในการโทรครั้งเดียว ลองศึกษาความแตกต่างระหว่างการอ้างอิงและการออกพร้อมกับกราฟเปรียบเทียบ

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบอ้างออก
ขั้นพื้นฐานจะช่วยให้การเปลี่ยนแปลงในมูลค่าของการโต้แย้งดำเนินการกับคำหลักอ้างอิงจะช่วยให้วิธีการคืนค่าเหล่านั้นนำหน้าด้วยคำหลักออก
การเริ่มต้นพารามิเตอร์การอ้างอิงจะต้องเริ่มต้นก่อนที่จะเรียกวิธีการพารามิเตอร์ออกจะต้องเริ่มต้นภายในวิธีที่เรียกว่าก่อนที่จะยุติ
การประกาศพารามิเตอร์ที่จะเปลี่ยนแปลงโดยวิธีการจะประกาศให้เป็นอ้างอิงในขณะที่การประกาศวิธีการและวิธีการโทรพารามิเตอร์ที่จะส่งคืนจะต้องประกาศว่าเป็นอ้างอิงในขณะที่การประกาศวิธีการและวิธีการโทร

ความหมายของคำหลักอ้างอิง

“ ref” เป็นโมดิฟายเออร์พารามิเตอร์ที่ใช้เมื่อมีความต้องการเรียกใช้เมธอดที่มีการอ้างอิงโดยการเรียก เมื่อเราต้องการให้การเปลี่ยนแปลงที่เกิดขึ้นกับข้อโต้แย้งภายในวิธีการที่เรียกใช้นั้นจะต้องสะท้อนให้เห็นถึงคุณค่าดั้งเดิมของตัวแปรนั้นจากนั้นจะใช้ตัวดัดแปลงพารามิเตอร์ ref ชนิดของค่าที่เราต้องการประกาศเป็นการอ้างอิงจะนำหน้าด้วยคีย์เวิร์ด“ ref” ในระหว่างการประกาศเมธอดและการเรียกเมธอด สามารถประกาศพารามิเตอร์มากกว่าหนึ่งพารามิเตอร์เป็น“ ref” ในขณะที่โทรและประกาศเมธอด

 ใช้ระบบ; คลาส DemoRef {public void Square (การอ้างอิง int) {s = s * s; }} คลาส Ref_main {โมฆะหลักคงที่ () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("a before before call call:" + a); ob.Square (อ้างถึง); // ใช้คำหลัก Console.WriteLine ("สายหลังจาก:" + a); }} // ส่งออก a ก่อนการเรียกใช้เมธอด: 10 a after after call: 100 

ในโค้ดข้างต้นตัวแปร 'a' จะถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังเมธอด Square (ref a) พร้อมกับโมดิฟายเออร์อ้างอิงพารามิเตอร์ที่แนบมา มันหมายถึงสิ่งที่เปลี่ยนแปลงวิธีการสแควร์ (อ้างอิง a) จะดำเนินการกับตัวแปร 'a' ภายในมันจะสะท้อนให้เห็นในมูลค่าเดิมของ 'a' นอกวิธีการเช่นกัน

มีจุดสำคัญบางอย่างที่ต้องจดจำเมื่อจัดการกับตัวดัดแปลงพารามิเตอร์“ อ้างอิง”

  • อาร์กิวเมนต์ที่คุณผ่านโดยการอ้างอิงไปยังวิธีการจะต้องเริ่มต้นก่อนที่จะเรียกวิธีการ
  • วิธีการจะต้องไม่กำหนดค่าเริ่มต้นให้กับอาร์กิวเมนต์การอ้างอิง
  • นอกจากนี้คุณยังสามารถใช้อ้างอิงพร้อมกับตัวแปรอ้างอิงด้วย

คำจำกัดความของคำหลักที่ไม่ใช้

ทุกครั้งที่คุณเรียกเมธอดมันจะส่งคืนค่าเดียวเท่านั้น หากคุณต้องการให้วิธีการส่งคืนค่ามากกว่าหนึ่งค่าในการโทรคำสำคัญ "ออก" จะต้องใช้พร้อมกับพารามิเตอร์ที่คุณต้องการที่จะกลับมาเมื่อวิธีการถูกยกเลิก บางครั้งเป็นกรณีที่เมื่อเราไม่ต้องการส่งผ่านสิ่งใดไปยังวิธีการ แต่ต้องการวิธีการคืนกลับสิ่งที่เราใช้พารามิเตอร์ที่มีคำหลักออก ลองมาทำความเข้าใจกับตัวอย่าง

 ใช้ระบบ; คลาส DemoOut {public int Decompose (double x, double เศษส่วน) {int whole_num; whole_num = (int) x; เศษส่วน = x - whole_num; ส่งคืนทั้งหมด _num; }} คลาส Out_maint {โมฆะหลักคงที่ () {DemoOut ob = new DemoOut (); int i; frac คู่ i = ob.Decompose (100.125, ออก frac); // ใช้คีย์เวิร์ด Console.WriteLine ("ส่วนจำนวนเต็มคือ" + i); Console.WriteLine ("ส่วนที่เป็นเศษส่วน" + frac); }} // output จำนวนเต็มเท่ากับ 100 ส่วนเศษส่วนเท่ากับ 0.125 

ในโค้ดด้านบนทั้งสองค่าจะถูกส่งกลับโดย, วิธีการสลายตัว () หนึ่งมันจะส่งกลับโดยคำหลัก“ คืน” คือ whole_num และอื่น ๆ มันกลับพารามิเตอร์ที่นำหน้าด้วยคำหลักออกในขณะที่วิธีการเรียกเช่น "frac"

จุดสำคัญที่ควรจดจำเกี่ยวกับคำสำคัญ

  • ต่างจากคำหลักอ้างอิงพารามิเตอร์ที่ใช้คำหลักออกจะต้องไม่เริ่มต้นก่อนที่จะเรียกวิธี
  • เมธอดที่เรียกใช้นั้นจะกำหนดค่าให้กับพารามิเตอร์ด้วยคีย์เวิร์ด out เนื่องจากถูกพิจารณาว่าไม่ได้กำหนดภายในเมธอดที่เรียกนั่นคือจะถือว่าไม่มีค่าเริ่มต้น
  • เมธอดที่เรียกใช้ต้องกำหนดค่าให้กับพารามิเตอร์ out ก่อนที่เมธอดจะสิ้นสุด
  • คีย์เวิร์ด out ยังสามารถใช้ได้กับตัวแปรอ้างอิง

ความแตกต่างที่สำคัญระหว่างการอ้างอิงและการออกใน C #

  1. เมื่อตัวแปรที่นำหน้าด้วยคำหลักอ้างอิงถูกส่งไปยังวิธีการใด ๆ การเปลี่ยนแปลงที่เกิดขึ้นภายในวิธีการจะสะท้อนให้เห็นในค่าเดิม เมื่อตัวแปรที่ส่งผ่านไปยังเมธอดถูกนำหน้าด้วยคีย์เวิร์ด out เมธอดจะส่งคืนเมธอดโดยไม่ใช้คีย์เวิร์ด return
  2. พารามิเตอร์การอ้างอิงควรเริ่มต้นได้ก่อนที่จะถูกส่งผ่านไปยังวิธีการ ในทางตรงกันข้ามพารามิเตอร์ออกจะต้องเริ่มต้นได้ภายในวิธีการที่จะถูกส่งผ่านไป
  3. ในขณะที่โทรประกาศหรือกำหนดวิธีการพารามิเตอร์อ้างอิงจะถูกประกาศอย่างชัดเจนว่าเป็นอ้างอิง ในขณะที่การเรียกประกาศหรือกำหนดวิธีการพารามิเตอร์ออกประกาศอย่างชัดเจนว่าเป็นออก

สรุป:

เมื่อใดก็ตามที่ตัวแปรถูกส่งผ่านโดยการอ้างอิงไปยังวิธีการคำหลักอ้างอิงและออกสามารถใช้ ในขณะที่เหตุผลของการใช้คำหลักทั้งสองนั้นแตกต่างกันซึ่งสามารถใช้คำสำคัญอ้างอิงเพื่อเปลี่ยนค่าของอาร์กิวเมนต์ที่นำหน้าด้วยคำหลักอ้างอิงส่งผ่านไปยังวิธีการที่เรียกว่าและคำหลักออกมาจะใช้เพื่อคืนค่าอาร์กิวเมนต์ โดยคำหลักออก

Top