PDA

View Full Version : درباره ی generic



WindowsXp
دوشنبه 13 فروردین 1386, 00:16 صبح
با سلام
این اولین پست منه.
من یک سوال دارم کسی می تونه یک خورده در مورد Generic برام توضیح بده.
البته من خودم کمی در موردش خوندم اما راستش درست کاربردش و نحوه ی استفاده اش رو نفهمیدم....
خیلی ممنون:قلب:

linux
دوشنبه 13 فروردین 1386, 00:46 صبح
msdn را بخوان کامل با مثال توضیح داده

WindowsXp
دوشنبه 13 فروردین 1386, 21:41 عصر
من msdn ندارم .اگر ممکنه توضیح و مثالش رو برام بگذارید!ببخشدا

__H2__
چهارشنبه 15 فروردین 1386, 12:08 عصر
سلام
کلاس های Generic با توجه به یک Type عمومی تعریف میشوند!
نمی دانم دقیقاَ چگونه توضیح دهم، اگر با ++C کار کرده باشید، به شما کمه کلیدی template را یاد آوری میکنم. (بعد از نصب VS2005 تا گشتی در ObjectBrowse زدم متوجه اینت قابلی جدید شدم و بسیار خوشحال شدم که این قابلیت (و نیز تعریف اختصاصی اپراتورها) به Basic هم راه یافت و اولین مطلبی بود که طریقه کار با آن را در VB8 امتحان کردم!)


مثلاَ من میخواهم یک کلاسس ماتریس (ریاضی) طراحی کنم و اعمال روی ماتریس ها را در این کلاسس بهینه کنم (جمع، تفریق، دترمینال و...)
هر سلول را از چه نوع تعریف کنم Integer یا Double و یا Long و....
یک راه ساده این است که هر سلول را از نوع Double یا Decimal معرفی کنم تا محدوده عظیمی از داده ها پشتیبانی کند
ولی اگر کاربر نیازی به اعداد اعشاری نداشته باشد، سرعت عملکرد Integer بسیار بالاتر از Double است

راه دیگر آن است که یک کلاسس برای Integer و یکی برای Double طراحی کنم و...

و راه راحت تر و فوق العاده استفاده از نوع های Generic یا همان template در ++C است.
که یک شمای Type موقت تعریف میکنم و همه Dim ها و ورودی و خروجی ها را بر اساس آن میچینم، و بعداَ این استفاده کننده از کلاسس ماتریس من است که تایین میکند، در حالت واقعی چه Type جایگزین آن Type موقت شود و کلاسس برای Type درخواستی او مجدداَ کامپایل میشود.
(البته در ++C واقعاَ کلاسس مجداَ کامپایل میشد ولی در مورد دات نت مطمئن نیستم، اگر هم کامپایل نشود، شاید در ورژن های آینده بشود!!! بحرحال این مطلب ربطی به استفاده از آن ندارد! لازم نیست طراح اتومبیل باشید تا بتوانید آن را برانید!)

امیدوارم متوجه شده باشید، شاید بعداَ توضیح بهتر یا مثالی به زهنم برسد و یا کد نمونه ای برای درک بهتر برایتان بگذارم. (البته اگر با راهنمایی دوستان مشکلتان حل نشد.)