คำถามติดแท็ก delegates

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

7
เหตุใดจึงไม่สามารถกำหนดวิธีที่ไม่ระบุชื่อให้ var ได้
ฉันมีรหัสต่อไปนี้: Func<string, bool> comparer = delegate(string value) { return value != "0"; }; อย่างไรก็ตามสิ่งต่อไปนี้ไม่ได้รวบรวม: var comparer = delegate(string value) { return value != "0"; }; ทำไมคอมไพเลอร์ไม่สามารถคิดได้ว่ามันคือFunc<string, bool>อะไร? ใช้พารามิเตอร์สตริงเดียวและส่งคืนบูลีน แต่มันทำให้ฉันมีข้อผิดพลาด: ไม่สามารถกำหนดเมธอดแบบไม่ระบุชื่อให้กับตัวแปรโลคัลที่พิมพ์โดยนัย ฉันมีหนึ่งเดาและนั่นคือถ้ารุ่น var รวบรวมมันจะขาดความมั่นคงถ้าฉันมีต่อไปนี้: var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; }; …


4
ฉันจะตั้งค่าตัวแทนอย่างง่ายในการสื่อสารระหว่างสองตัวควบคุมมุมมองได้อย่างไร
ฉันมีสองUITableViewControllersและจำเป็นต้องส่งค่าจากตัวควบคุมมุมมองลูกไปยังผู้ปกครองโดยใช้ผู้รับมอบสิทธิ์ ฉันรู้ว่าผู้ได้รับมอบหมายคืออะไรและแค่ต้องการเห็นตัวอย่างง่ายๆในการติดตาม ขอบคุณ


8
ตัวอย่างที่เรียบง่ายของ C # ผู้สังเกตการณ์ / สังเกตได้กับผู้รับมอบสิทธิ์
ฉันเพิ่งเริ่มขุดคุ้ยภาษา C # แต่ฉันคิดไม่ออกว่าผู้ได้รับมอบหมายทำงานอย่างไรเมื่อใช้รูปแบบผู้สังเกตการณ์ / สังเกตได้ในภาษา ใครช่วยยกตัวอย่างง่ายๆให้ฉันหน่อยได้ไหมว่ามันเสร็จแล้ว ฉันได้ googled สิ่งนี้แล้ว แต่ตัวอย่างทั้งหมดที่พบมีปัญหาเฉพาะเจาะจงเกินไปหรือ "ป่อง" เกินไป

9
การใช้ตัวแทนการดำเนินการใน C # [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการ1 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันทำงานร่วมกับ Action Delegates ใน C # ด้วยความหวังว่าจะได้เรียนรู้เพิ่มเติมเกี่ยวกับพวกเขาและคิดว่าพวกเขาจะมีประโยชน์ในจุดใด มีใครใช้ Action Delegate หรือไม่และถ้าเป็นเช่นนั้นเพราะเหตุใด หรือคุณช่วยยกตัวอย่างที่อาจเป็นประโยชน์ได้ไหม
132 c#  lambda  delegates  action 


13
ห่อผู้รับมอบสิทธิ์ใน IEqualityComparer
Linq หลายฟังก์ชั่นที่คำนวณได้ใช้เวลาIEqualityComparer<T>. มีคลาส Wrapper ที่สะดวกในการปรับ a delegate(T,T)=>boolเพื่อใช้งานIEqualityComparer<T>หรือไม่? ง่ายพอที่จะเขียน (หากคุณเพิกเฉยปัญหาเกี่ยวกับการกำหนดแฮชโค้ดที่ถูกต้อง) แต่ฉันต้องการทราบว่ามีวิธีแก้ปัญหาแบบสำเร็จรูปหรือไม่ โดยเฉพาะอย่างยิ่งฉันต้องการตั้งค่าการดำเนินการบนDictionarys โดยใช้เฉพาะคีย์เพื่อกำหนดความเป็นสมาชิก (ในขณะที่รักษาค่าตามกฎที่แตกต่างกัน)
127 .net  linq  delegates 

3
“ การลบตัวแทนมีผลลัพธ์ที่คาดเดาไม่ได้” ใน ReSharper / C #?
เมื่อใช้ปัญหาmyDelegate -= eventHandlerReSharper (เวอร์ชัน 6): การลบผู้รับมอบสิทธิ์มีผลลัพธ์ที่คาดเดาไม่ได้ เหตุผลที่อยู่เบื้องหลังนี้คือการอธิบายโดย JetBrains ที่นี่ คำอธิบายมีเหตุผลและหลังจากอ่านแล้วฉันสงสัยว่าการใช้งานทั้งหมดของฉัน-กับผู้ได้รับมอบหมาย วิธีแล้ว , ฉันสามารถเขียนเหตุการณ์ที่ไม่ใช่อัตโนมัติโดยไม่ทำให้ ReSharper ไม่พอใจได้หรือไม่? หรือมีวิธีที่ดีกว่าและ / หรือ "ถูกต้อง" ในการนำไปใช้หรือไม่? หรือฉันสามารถเพิกเฉยต่อ ReSharper ได้หรือไม่? นี่คือรหัสแบบง่าย: public delegate void MyHandler (object sender); MyHandler _myEvent; public event MyHandler MyEvent { add { _myEvent += value; DoSomethingElse(); } remove { _myEvent -= value; // …

8
เหตุใดจึงต้องแคสต์นิพจน์แลมบ์ดาเมื่อระบุเป็นพารามิเตอร์ Delegate ธรรมดา
ใช้เมธอด System.Windows.Forms.Control.Invoke (Delegate method) เหตุใดจึงทำให้เกิดข้อผิดพลาดเวลาคอมไพล์: string str = "woop"; Invoke(() => this.Text = str); // Error: Cannot convert lambda expression to type 'System.Delegate' // because it is not a delegate type ยังใช้งานได้ดี: string str = "woop"; Invoke((Action)(() => this.Text = str)); เมื่อเมธอดคาดว่าจะมี Delegate ธรรมดา?
124 c#  c#-3.0  delegates  lambda 


8
ฉันจะใช้ผู้รับมอบสิทธิ์ได้ที่ไหน [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ มีสถานที่ใดบ้างในโลกแห่งความเป็นจริงที่เรียกร้องให้มีตัวแทน ฉันอยากรู้ว่ามีสถานการณ์หรือรูปแบบใดบ้างที่วิธีนี้เป็นทางออกที่ดีที่สุด ไม่ต้องใช้รหัส

10
ความแตกต่างระหว่างเหตุการณ์และผู้ได้รับมอบหมายและการใช้งานตามลำดับ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันไม่เห็นข้อดีของการใช้เหตุการณ์กับผู้ร่วมประชุมนอกเหนือจากการใช้น้ำตาลสังเคราะห์ บางทีฉันอาจจะเข้าใจผิด แต่ดูเหมือนว่าเหตุการณ์นั้นจะเป็นเพียงตัวยึดสำหรับผู้รับมอบสิทธิ์เท่านั้น คุณช่วยอธิบายให้ฉันทราบถึงความแตกต่างและเมื่อใดควรใช้ มีข้อดีข้อเสียอย่างไร? โค้ดของเราฝังรากลึกมาจากเหตุการณ์ต่างๆและฉันต้องการไปที่ด้านล่างของมัน คุณจะใช้ผู้รับมอบสิทธิ์ในกิจกรรมและในทางกลับกันเมื่อใด โปรดระบุประสบการณ์ในโลกแห่งความเป็นจริงของคุณกับทั้งคู่โดยระบุในรหัสการผลิต
107 c#  events  delegates 

7
เหตุการณ์ C # ซิงโครไนซ์หรือไม่
คำถามนี้มีสองส่วน: การเพิ่มเหตุการณ์บล็อกเธรดหรือไม่หรือเริ่มดำเนินการ EventHandlers แบบอะซิงโครนัสและเธรดจะดำเนินต่อไปในเวลาเดียวกันหรือไม่ เป็นEventHandlers บุคคล (สมัครรับข้อมูลเหตุการณ์) ทำงานพร้อมกันหลังจากนั้นอีกหนึ่งหรือว่าพวกเขาทำงานแบบไม่พร้อมกับการรับประกันว่าคนอื่น ๆ ไม่ได้ทำงานในเวลาเดียวกันหรือไม่?
104 c#  .net  events  delegates 

4
ข้อผิดพลาดในการเรียกคอมไพเลอร์ Ambiguous - เมธอดที่ไม่ระบุชื่อและกลุ่มวิธีการที่มี Func <> หรือ Action
ฉันมีสถานการณ์ที่ฉันต้องการใช้ไวยากรณ์กลุ่มวิธีแทนที่จะใช้วิธีการที่ไม่ระบุชื่อ (หรือไวยากรณ์แลมบ์ดา) สำหรับการเรียกใช้ฟังก์ชัน ฟังก์ชั่นนี้มีสองโอเวอร์โหลดหนึ่งที่ใช้เวลาอีกอันหนึ่งใช้Actionเวลา a Func&lt;string&gt;. ฉันสามารถเรียกสองโอเวอร์โหลดได้อย่างมีความสุขโดยใช้วิธีการที่ไม่ระบุชื่อ (หรือไวยากรณ์แลมบ์ดา) แต่ได้รับข้อผิดพลาดของคอมไพเลอร์ของการเรียกใช้ที่ไม่ชัดเจนหากฉันใช้ไวยากรณ์กลุ่มวิธีการ ฉันสามารถแก้ปัญหาได้โดยการแคสต์อย่างชัดเจนไปยังActionหรือFunc&lt;string&gt;แต่ไม่คิดว่าสิ่งนี้จะจำเป็น ใครช่วยอธิบายได้ไหมว่าทำไมต้องมีการแคสต์อย่างชัดเจน ตัวอย่างโค้ดด้านล่าง class Program { static void Main(string[] args) { ClassWithSimpleMethods classWithSimpleMethods = new ClassWithSimpleMethods(); ClassWithDelegateMethods classWithDelegateMethods = new ClassWithDelegateMethods(); // These both compile (lambda syntax) classWithDelegateMethods.Method(() =&gt; classWithSimpleMethods.GetString()); classWithDelegateMethods.Method(() =&gt; classWithSimpleMethods.DoNothing()); // These also compile (method group with explicit …
102 c#  delegates 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.