คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
>
> เรียกใช้หรือดูผลลัพธ์ในคลาส LAF.OStyleChanged
>
ใน .Net จะใช้ Event-Driven Pattern สำหรับการทำ call-back
กล่าวคือใน type อาจมีเหตุการณ์ (event) ชื่อต่าง ๆ (OStyleChanged)
แล้วก็ type อื่น ๆ ที่อยากจะรับทราบเหตุการณ์นั้น ทำการ subscribe ชื่อ event นั้น
1. event มี type เป็น muliple delegate (ลองไปหาอ่านดูใน msdn)
2. มีข้อตกลงว่าจะผ่านค่าพารามิเตอร์เป็น descendant (ลูกหลาน) ของ EventArgs เสมอ
แต่สำหรับกรณีนี้ดูเหมือนคนเขียนตั้งใจไม่ให้คนอื่น subscribe ตัว OStyleChanged เลย
เพราะว่า
- protected หมายถึง ใช้ใน descendant เท่านั้น
- internal ถ้าจำผิด หมายถึง ต้องเรียกภายใน assembly เดียวกันเท่านั้น
- อีกทั้งไม่ได้ประกาศ OStyleChanged ไว้เป็น event ด้วย
ดังนั้นโดยเจตนารมณ์ของผู้เขียน คือ ไม่ให้คนอื่นสามารถรับทราบเมื่อ OStyleChanged เกิดขึ้นครับ
เขียนทำนองว่าเป็น event แต่เอาไว้ใช้ภายในกันเองเท่านั้น
สรุปหาอ่านเรื่อง type ประเภท multiple delegate และ event member ของ type ครับ
>
> ระหว่าง manual field vs. auto property มันต่างกันยังไงครับ
>
เห็นใจ น่าหนักใจแทนคนเรียนครับ
บางทีความขี้เกียจมันทำให้เพิ่ม learning curve ของผู้เรียนใหม่ได้
1. arrow หมายถึง expression body
- ซึ่งสามารถเอามาใช้ในคลาสตรง ๆ เลย อย่างใน Progress => progress ข้างบน
- หรือเอามาใช้ใน get => field_name และ set => field_name = value ก็ได้
หลักการใช้ก็เหมือน lambda หรือ function object กลาย ๆ
เป็น language feature ที่เกิดจากความขี้เกียจล้วน ๆ
แต่ใช้เป็นแล้วจะติดใจครับ
2. automatic implementation property
หรือ property ที่ไม่ได้อ้างอิงชื่อ member อื่น
เราสามารถเขียนในรูปย่อ { get; set; } ได้
เพิ่มเติม [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
> เรียกใช้หรือดูผลลัพธ์ในคลาส LAF.OStyleChanged
>
ใน .Net จะใช้ Event-Driven Pattern สำหรับการทำ call-back
กล่าวคือใน type อาจมีเหตุการณ์ (event) ชื่อต่าง ๆ (OStyleChanged)
แล้วก็ type อื่น ๆ ที่อยากจะรับทราบเหตุการณ์นั้น ทำการ subscribe ชื่อ event นั้น
1. event มี type เป็น muliple delegate (ลองไปหาอ่านดูใน msdn)
2. มีข้อตกลงว่าจะผ่านค่าพารามิเตอร์เป็น descendant (ลูกหลาน) ของ EventArgs เสมอ
แต่สำหรับกรณีนี้ดูเหมือนคนเขียนตั้งใจไม่ให้คนอื่น subscribe ตัว OStyleChanged เลย
เพราะว่า
- protected หมายถึง ใช้ใน descendant เท่านั้น
- internal ถ้าจำผิด หมายถึง ต้องเรียกภายใน assembly เดียวกันเท่านั้น
- อีกทั้งไม่ได้ประกาศ OStyleChanged ไว้เป็น event ด้วย
ดังนั้นโดยเจตนารมณ์ของผู้เขียน คือ ไม่ให้คนอื่นสามารถรับทราบเมื่อ OStyleChanged เกิดขึ้นครับ
เขียนทำนองว่าเป็น event แต่เอาไว้ใช้ภายในกันเองเท่านั้น
สรุปหาอ่านเรื่อง type ประเภท multiple delegate และ event member ของ type ครับ
>
> ระหว่าง manual field vs. auto property มันต่างกันยังไงครับ
>
เห็นใจ น่าหนักใจแทนคนเรียนครับ
บางทีความขี้เกียจมันทำให้เพิ่ม learning curve ของผู้เรียนใหม่ได้
1. arrow หมายถึง expression body
- ซึ่งสามารถเอามาใช้ในคลาสตรง ๆ เลย อย่างใน Progress => progress ข้างบน
- หรือเอามาใช้ใน get => field_name และ set => field_name = value ก็ได้
หลักการใช้ก็เหมือน lambda หรือ function object กลาย ๆ
เป็น language feature ที่เกิดจากความขี้เกียจล้วน ๆ
แต่ใช้เป็นแล้วจะติดใจครับ
2. automatic implementation property
หรือ property ที่ไม่ได้อ้างอิงชื่อ member อื่น
เราสามารถเขียนในรูปย่อ { get; set; } ได้
เพิ่มเติม [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
แสดงความคิดเห็น
สอบถามเกี่ยวกับ C# ครับ
จากรูปครับ
1. ผมอยากทราบว่าผมจะทำเขียนโค้ดยังไงเพื่อเรียกใช้หรือดูผลลัพธ์ในคลาส LAF.OStyleChanged
2. ในคลาส LAFProgress....... ระหว่าง manual field vs. auto property มันต่างกันยังไงครับ
ผมเป็นมือใหม่ครับ แล้วก็ไม่เก่งอะไร หัดเขียน, เรียนรู้ไปเรื่อย ๆ ลองหาข้อมูลมีแต่ภาษาอังกฤษทั้งฟังและผ่านก็ยังไม่เข้าใจครับ รบกวนผู้รู้ช่วยสอนด้วยครับ