سلامی مجددبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Arshan935 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
اولین کد :
نوع داده ای (یعنی سمت چپ مساوی) متغییری که میخواد توی هر حلقه ای قرار بگیره ، باید توی کلاس یا استراکچرِ (و هر چیز دیگه ای که هست) اون نوع داده ، تابعی بنام GetEnumerator تعریف شده باشه . اون حلقه (foreach ، for و ...) ، از این متد متوجه میشه که در تکرار (یا loop) بعدی ، چه مقداری یا چه عضوی از اون چیز (در اینجا آرایه) را میخونه.کد:object myArray = new object[] { 12, 15, 25, "salam", 'A' }; foreach (object item in (object[])myArray) { MessageBox.Show(item.ToString()); }
در این کدتون ، چون نوع داده ای myArray تون از نوع object هست و این نوع داده ای هم این تابع را نداره پس نمیتونه توی حلقه شرکت کنه . ولی وقتی myArray را در حلقه ، به نوع مقدارش ( آرایه ای از آبجکت ها یا object[] ) تبدیل میکنید ، چون آرایه ای از هر چیز ، از کلاس Array ارث بری میکنه (یعنی آرایه ای از آبجکت ها هم از کلاس Array ارث بری میکنه) و کلاس Array هم این تابع را داره ، پس مشکلی دیگه نیست
همونطور که در پست قبل گفتم ، وقتی نوع داده ای myArray را از نوع Array[] (آرایه ای از array) میگیرید ، پس باید در مقدارش (سمت راست مساوی) ، یه آرایه برای Array بودن اش بدین (چون همه ی آرایه ها از array ارث بری میکنن و نمیشه متغییری از نوع array باشه اما آرایه نباشه) و یه آرایه ی دیگه برای علامت آرایه ( ای که کنار نوع Array یعنی علامت [] ) که گذاشتید ، بدید. (قضیه ی آرایه در آرایه یا jagged array که در پست بالا مثال اش را گفتم)برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Arshan935 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
اما وقتی مقدار متغییر myArray را آرایه ی یک بعدی میدید ، دیگه نباید نوع داده ای را از نوع Array[] بگیرید (دلیل اش را بالا گفتم) . صرفا کافیه از نوع Array بگیرید :
کد:Array myArray = new double[] { 12, 15, 25.241 }; foreach (double item in (double[])myArray) { MessageBox.Show(item.ToString()); }
البته همونطور که گفتم ، لازم هم نیست در حلقه ها ، هر بار متغییرتون (در اینجا myArray) را تبدیل کنید ( در اینجا double[] ) . این تبدیل ، اغلب اوقات نیاز نیست ولی میتونین هم انجام بدین .
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Arshan935 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
نیاز که بستگی داره . اما کلا کاربرد داره و همچین کدنویسی ای انجام میشه (منظورم نوع داده ای پدر یا اجداد و شی از نوع فرزند یا نوادگان هست) . اگه درکش یه کم سخت هه ، بخاطر اینه که باید مباحث شی گرایی را هم بدونی (قسمت 26 به بعد) . بنابراین اگه اینجا سخت متوجه میشی ، زیاد نگران نباش و خیلی روشون تمرکز نکن .






پاسخ با نقل قول
Bookmarks