سلام!برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط SajjadKhati برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
سجاد جان این توضیحاتی که فرمودی درسته و برای تکمیلش می تونی مطلب زیر رو هم مطالعه کنی:
Polymorphism in .NET - CodeProject
ولی چند ریختی فقط همین نیستش و مفاهیم abstract، delegate و operator رو هم در بر می گیره:
مفهوم چندریختی در زبان سی شارپ #C
C# - Polymorphism
در مورد Delegate هم این مطلب شاید مفید باشه:
Delegate راهي براي اجراي چندين تابع مختلف است كه ورودي مشابهي دارند. فرضا" اگر سه تابع داشته باشيم كه عمليات هاي رياضي مختلفي رو روي يك عدد مشابه اجرا مي كنند؛ به جاي اجراي تك تك اون سه تابع با ورودي يكسان، مي تونيم سه تابع رو در يك Delegate تعريف كنيم و سپس با يك بار دادن اون عدد به Delegate ايجاد شده، Delegate خودش عدد ورودي رو به سه تابع داخليش ميده و نتايج رو بر مي گردونه. حال اگر يكي از اين سه تابع به جاي يه ورودي به دو ورودي نياز داشته باشه ديگه نميشه از اين روش استفاده كرد. در اين جا به اصطلاح گفته ميشه Delegate Signature بين سه تابع مطابقت نداره (عدم تشابه در پارامتر هاي ورودي و يا مقادير برگشتي توابع). در مبحث چند ريسماني هم وقتي قصد داريم تابعي رو توسط يك Thread كه يك متد Delegate محسوب ميشه اجرا كنيم ممكنه با مشكل عدم تطابق Delegate Signature رو به رو بشيم.
در حالت كلي اگر قصد داشته باشيم تابعي رو توسط يك Thread مجزا اجرا كنيم و اون تابع داراي پارامتر ورودي باشه جهت هماهنگ كردن Delegate Signature، بايد از عبارت delegate قبل از معرفي تابع استفاده كنيم. در دستور شما هم تابع Sort چهار ورودي داره كه باعث ميشه از اين قاعده مستثني نباشه. لازم به ذكره در نسخه هاي جديد سي شارپ اين هماهنگي با استفاده از عبارت هاي لاندا (Lambda Expression) هم امكان پذيره.
Bookmarks