แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | อ้าง | ออก |
---|---|---|
ขั้นพื้นฐาน | จะช่วยให้การเปลี่ยนแปลงในมูลค่าของการโต้แย้งดำเนินการกับคำหลักอ้างอิง | จะช่วยให้วิธีการคืนค่าเหล่านั้นนำหน้าด้วยคำหลักออก |
การเริ่มต้น | พารามิเตอร์การอ้างอิงจะต้องเริ่มต้นก่อนที่จะเรียกวิธีการ | พารามิเตอร์ออกจะต้องเริ่มต้นภายในวิธีที่เรียกว่าก่อนที่จะยุติ |
การประกาศ | พารามิเตอร์ที่จะเปลี่ยนแปลงโดยวิธีการจะประกาศให้เป็นอ้างอิงในขณะที่การประกาศวิธีการและวิธีการโทร | พารามิเตอร์ที่จะส่งคืนจะต้องประกาศว่าเป็นอ้างอิงในขณะที่การประกาศวิธีการและวิธีการโทร |
ความหมายของคำหลักอ้างอิง
“ 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 #
- เมื่อตัวแปรที่นำหน้าด้วยคำหลักอ้างอิงถูกส่งไปยังวิธีการใด ๆ การเปลี่ยนแปลงที่เกิดขึ้นภายในวิธีการจะสะท้อนให้เห็นในค่าเดิม เมื่อตัวแปรที่ส่งผ่านไปยังเมธอดถูกนำหน้าด้วยคีย์เวิร์ด out เมธอดจะส่งคืนเมธอดโดยไม่ใช้คีย์เวิร์ด return
- พารามิเตอร์การอ้างอิงควรเริ่มต้นได้ก่อนที่จะถูกส่งผ่านไปยังวิธีการ ในทางตรงกันข้ามพารามิเตอร์ออกจะต้องเริ่มต้นได้ภายในวิธีการที่จะถูกส่งผ่านไป
- ในขณะที่โทรประกาศหรือกำหนดวิธีการพารามิเตอร์อ้างอิงจะถูกประกาศอย่างชัดเจนว่าเป็นอ้างอิง ในขณะที่การเรียกประกาศหรือกำหนดวิธีการพารามิเตอร์ออกประกาศอย่างชัดเจนว่าเป็นออก
สรุป:
เมื่อใดก็ตามที่ตัวแปรถูกส่งผ่านโดยการอ้างอิงไปยังวิธีการคำหลักอ้างอิงและออกสามารถใช้ ในขณะที่เหตุผลของการใช้คำหลักทั้งสองนั้นแตกต่างกันซึ่งสามารถใช้คำสำคัญอ้างอิงเพื่อเปลี่ยนค่าของอาร์กิวเมนต์ที่นำหน้าด้วยคำหลักอ้างอิงส่งผ่านไปยังวิธีการที่เรียกว่าและคำหลักออกมาจะใช้เพื่อคืนค่าอาร์กิวเมนต์ โดยคำหลักออก