ฉันกำลังส่ง classobject (วัตถุคลาสแคช) เป็นข้อมูลอ้างอิงในตัวสร้างของ Myclass
public class Test{
static void Main(string[] args){
Cache<string, string> cache;
Myclass obj = new MyClass(ref cache);
obj.doSomething();
Console.WriteLine(cache.key); // I want this value to get changed according to the doSomething Method
Console.WriteLine(cache.value);// I want this value to get changed according to the doSomething Method
}
}
ตอนนี้ใน MyClass ฉันต้องการตั้งค่าแคชนี้
public class Myclass{
ref Cache<string, string> C;
Myclass(ref Cache<string, string> cache){
this.C = cache;
}
void doSomething(){
C.key = "key";
C.value = "value"
}
}
ฉันต้องการให้การเปลี่ยนแปลงค่าแคชใน Myclass ควรสะท้อนให้เห็นใน Test Class แต่ฉันไม่แน่ใจว่าจะบรรลุเป้าหมายนี้ได้อย่างไร ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม
นี่คือสถานการณ์สมมติที่สมบูรณ์ซึ่งฉันพยายามทำ เราไม่มีองค์กรหลายแห่ง และมีคุณสมบัติบางอย่างขององค์กรซึ่งเหมือนกันสำหรับบางองค์กร และเราไม่ต้องการคำนวณคุณสมบัติเหล่านั้นซ้ำแล้วซ้ำอีก เนื่องจากมีการดำเนินการที่มีค่าใช้จ่ายสูง คุณสมบัติดังกล่าวได้รับการคำนวณใน doSomethingMethod ข้างต้น
จริงๆ แล้วแคชของฉันคือรายการ และตัวแปรแคชนี้จะถูกส่งไปในหลายองค์กร ดังนั้นในวิธีการบางอย่าง ฉันต้องการตรวจสอบว่าแคชถูกตั้งค่าโดยองค์กรอื่นหรือไม่ และหากมีคีย์อยู่ ฉันจะไม่คำนวณการดำเนินการ และฉันจะคืนจากแคชเท่านั้น
ref
ไม่ควรบังคับที่นี่เลย ลองไม่ใช้มันเลย - person Damien_The_Unbeliever   schedule 27.01.2021Cache
นี่ไม่ใช่รายการ แต่ดูเหมือนว่าจะเป็นพจนานุกรม รวมถึงตัวอย่างตามที่ร้องขอในความคิดเห็นก่อนหน้าของฉัน - person Olivier Rogier   schedule 27.01.2021ref
สิ่งที่คุณให้กับ ctor คือ การอ้างอิงถึงอินสแตนซ์cache
การอ้างอิง ตัวมันเอง จะเป็นสำเนา แต่ยังคงอ้างอิงอินสแตนซ์ เดียวกัน หากคุณเปลี่ยน คุณสมบัติ ของอินสแตนซ์ดังกล่าว จะ สะท้อนผ่านการอ้างอิงอื่น ๆ ทั้งหมดไปยัง อินสแตนซ์ เดียวกัน - person Fildor   schedule 27.01.2021