ฉันอ่านเอกสาร MSDNแต่ไม่เข้าใจจริงๆ
ฉันเชื่อว่าพฤติกรรมของSetคือ "แทนที่ที่มีอยู่หรือเพิ่ม" (atomically)
ถูกต้องหรือไม่
ฉันอ่านเอกสาร MSDNแต่ไม่เข้าใจจริงๆ
ฉันเชื่อว่าพฤติกรรมของSetคือ "แทนที่ที่มีอยู่หรือเพิ่ม" (atomically)
ถูกต้องหรือไม่
คำตอบ:
Addไม่ทำอะไรเลย (ส่งคืนfalse) หากมีค่าสำหรับคีย์นั้นอยู่แล้ว Setแทรกหรืออัปเดตตามความจำเป็น
Remove+ Addจะทิ้งช่องว่างไว้ตรงกลางเมื่อเธรดอื่นค้นหาคีย์นั้นจะไม่ได้รับเบาะแส ( Setไม่โดยทั่วไปการแลกเปลี่ยนจะเป็นอะตอม) ด้วยเหตุนี้ในขณะที่Setมีผลลัพธ์สุดท้ายเช่นเดียวกับRemove+ Addแต่ความแตกต่างของกลไกจึงมีความสำคัญเนื่องจากอาจส่งผลกระทบต่อผู้โทรรายอื่น
ตัวอย่างของAdd :
ส่งคืนค่า
ประเภท: System.Boolean true หากการแทรกสำเร็จหรือเป็นเท็จหากมีรายการในแคชที่มีคีย์เดียวกับคีย์อยู่แล้ว
setแทนที่นโยบายถ้ามีรายการอยู่แล้ว?