นี่คือโค้ดของฉันซึ่งฉันพยายามเรียกใช้เมธอด object.ReferenceEquals
กับตัวแปรสองตัวที่อ้างอิงถึงอินสแตนซ์โครงสร้างเดียวกัน:
static void Main(string[] args)
{
var myref = new Group();
var myref2 = myref;
if (object.ReferenceEquals(myref, myref2))
{
Console.WriteLine("The references are equal.");
}
else
{
Console.WriteLine("The references are NOT equal.");
}
}
โครงสร้าง Group
ได้รับการกำหนดไว้ด้านล่าง:
struct Group
{
public int StudentCount { get; set; }
}
สิ่งที่น่าสนใจคือมันจะพิมพ์ข้อความในบล็อก else ซึ่งแนะนำว่า myref
และ myref2
กำลังชี้ไปที่วัตถุที่แตกต่างกัน:
ข้อมูลอ้างอิงไม่เท่ากัน
ทำไมสิ่งนี้ถึงเป็นไปได้? ฉันสร้างอินสแตนซ์ของ Group
struct เพียงครั้งเดียวเมื่อเริ่มต้นฟังก์ชัน Main
object.ReferenceEquals
ซึ่งก่อให้เกิดความมหัศจรรย์ทั้งหมด ดังนั้นจนถึงจุดที่วิธีการReferenceEquals
ถูกเรียกในคำสั่งif
นั้นmyref
และmyref2
ก็ชี้ไปที่ตำแหน่งหน่วยความจำเดียวกัน ถูกต้อง? - person RBT   schedule 16.06.2018