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