সি # তে ইভেন্টগুলি প্রোগ্রাম করার সময়, আকারে একটি প্রতিনিধি তৈরি করার পরামর্শ দেওয়া হয়:
delegate XEventHandler(object sender, XEventArgs e);
আমার প্রশ্ন, প্রতিনিধি প্রথম যুক্তি রয়েছে object sender
। এটি কি সবসময় জেনেরিক হতে হবে object
? প্রেরকের প্রকারের ফলে object
সর্বদা এর অনুরূপ কোডের ফলাফল হয়।
val = ((ConcreteType)sender).Property;
বা আরও ভার্জোজ,
ConcreteType obj = sender as ConcreteType
if (obj != null) { ... }
দৃ strongly়ভাবে প্রেরক প্রেরকদের বিরুদ্ধে একটি যুক্তি হ'ল অন্য বিষয়গুলি প্রকার সম্পর্কে চিন্তা না করে ইভেন্টটি ফরোয়ার্ড করতে পারে । যদিও এটি জিইউআই পরিবেশে উপলব্ধি করতে পারে, তবে আমি নিশ্চিত নই যে এটি কোনও জিইউআইয়ের বাইরে উপকৃত হতে পারে কিনা I
যদি প্রেরকের শ্রেণি সর্বদা পরিচিত হয় (অন্তত একটি বিমূর্ত শ্রেণি হিসাবে)? উদাহরণস্বরূপ, যদি আমি ListChanged
একটি বিমূর্ত List
শ্রেণিতে কোনও ইভেন্ট বাস্তবায়ন করি এবং অন্য শ্রেণিগুলি যদি এর উত্তরাধিকারী হতে চলেছে (যেমন LinkedList
, ArrayList
), তবে প্রকারের প্রেরকের সাথে আমার প্রতিনিধিকে সংজ্ঞায়িত করা কি সব ঠিক আছে List
?
delegate ListChangedEventHander(List sender, ListChangedEventArgs e);
বা, প্রচলিত object sender
আরো নির্দিষ্ট ধরণের পরিবর্তনের একটি নেতিবাচক প্রভাব আছে ?