سلام،
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگر ممکن هست ببنید.
من تو همین قسمت اول مشکل دارم!
به تایع Sort یک "آرایه ای از شی " را پاس مدهیم.کد:
// Demo IComparable by sorting array with "default" sort order.
Array.Sort(arrayOfCars);
Console.WriteLine("\nArray - Sorted by Make (Ascending - IComparable)\n");
foreach(car c in arrayOfCars)
Console.WriteLine(c.Make + "\t\t" + c.Year);
به طور پیش فرض IComparable رو پیاده کردیم تا مرتب سازی کنهحالاکد:
private int year;
private string make;
public car(string Make,int Year)
{
make=Make;
year=Year;
}
public int Year
{
get {return year;}
set {year=value;}
}
public string Make
{
get {return make;}
set {make=value;}
}
// Implement IComparable CompareTo to provide default sort order.
int IComparable.CompareTo(object obj)
{
car c=(car)obj;
return String.Compare(this.make,c.make);
}
اینترفیسی که پیاده کردیم داره یک نوع داد ه از نوع آبجکت رو میگیره،درصورتی که ما آرایه از اشیا رو براش فرستادیم.نه یک عدد آبجکت تنها
حتی برای اثبات این حرف تونسته Cast کنه به نوع car پس یک دونه ارسال شده؟ اما ما یک آرایه فرستادیم.
و قسمت دوم:اینجا شی که از ورودی به عنوان پارامتر گرفته رو مقایسه میکنه با this.makeکد:return String.Compare(this.make,c.make);
اینجا this کی و کدام شی هست؟!؟
بر چه اساس تعین میشه هر سری کدام شی باشه؟
پشت پرده داره چه اتفاقی میافته؟ ظاهرا متد Sort یک سری توابع مرتب سازی برای خودش داره و ما فقط فیلد که میخواهیم مقایسه کنیم را بهش میدهیم.
در سی شارپ اینقدر مدیریت کارها رو کامپایلر برعهده گرفته که گاهی اوقات آدم گیج میشه که پشت پرده چه خبره؟
راستش نمیشه از موضوع سریع رد شد و پذیرفت .میخواهم عمقی یاد بگیرم. :n03:
