PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : قیود Generic در #C



آبجی
14th February 2010, 01:57 AM
Generic ها در #C این امکان رو میدن تا تعیین نوع نامشخص پارامتر به کمک کلمه ی کلیدی where به عامل دیگه ای محدود بشه.
به عنوان مثال: class GenericClass<T> where T : myClass {}
یعنی T باید از نوع کلاس myClass باشه.
کلا ۶ نوع قید برای Generic ها وجود داره.
به عنوان مثالی از ذکر قید برای Genreric:
static T Max<T> (T a, T b)
{
return a > b ? a : b;
}
تکه کد فوق در صورت اجرا با خطا مواجه میشه چون نوع T مشخص نیست. در #C، تشخیص نوع Generic در زمان اجرای برنامه مشخص میشه و چون نوع T مشخص نیست و باید برای همه ی مقادیر ممکن T کد فوق کامپایل بشه، خطا رخ میده.
برای رفع این مشکل، از where برای تعیین اینکه نوع T از اینترفیس IComparable مشتق میشه استفاده می کنیم تا انواعی که برای عملیات جبری قابلیت مقایسه دارند و اینترفیس IComparable رو پیاده سازی می کنند مشخص بشن:
static T Max<T> (T a, T b) where T : IComparable<T>
{
return a.CompareTo (b) > 0 ? a : b;
}
موفق باشید.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد