PDA

View Full Version : مبتدی: جمع کردن مقادریر listbox



vB.N3T
سه شنبه 02 خرداد 1391, 19:30 عصر
سلام دوستان برای جمع کردن مقدار لیست باکس چه کدی باید استفاده کرد

اعداد لیست از 1 تا 5 هست

ROSTAM2
سه شنبه 02 خرداد 1391, 19:54 عصر
از حلقه for استفاده كنيد

فرید نجفلو
سه شنبه 02 خرداد 1391, 20:22 عصر
سلام
دوست عزیز میتونید از LINQ هم استفاده کنید
double SumRes=(from object aItem in this.listBox1.Items
select Convert.ToDouble( aItem)).Sum();

vB.N3T
سه شنبه 02 خرداد 1391, 20:27 عصر
ممنون از دو دوست اما من فعلا با LINQ اشنایی ندارم با حلقه و با forech هم هر کاری کردم نشد؟؟ راهی نیست ؟؟

فرید نجفلو
سه شنبه 02 خرداد 1391, 20:51 عصر
double SumRes=0;
foreach (object aItem in this.listBox1.Items)
SumRes += Convert.ToDouble(aItem);

vB.N3T
سه شنبه 02 خرداد 1391, 23:13 عصر
ممنون یه سوال دیگه...چرا متغیراز نوع دابل؟؟ مگر اعداد اینتیجر نیستند....البته من int زدم ایراد گرفت فقط میخوام دلیلشو بدونم..
و یه سوال دیگه مگر قانون foreach این نیست که ارگومان سمت چپ باید از نوع متغیری که باید پیمایش بشه باشه چرا اینجا به این صورت نوشه شده

فرید نجفلو
سه شنبه 02 خرداد 1391, 23:32 عصر
سلام

ممنون یه سوال دیگه...چرا متغیراز نوع دابل؟؟ مگر اعداد اینتیجر نیستند
من double دادم چون نمی دونستم اعداد شما تو چه رنجی هستن برای همین بزرگترین ظرفیت رو دادم تا با مشکل مواجه نشید (تبدیل int به doyble مشکلی نداره ولی برعکسش چرا!)

البته من int زدم ایراد گرفت فقط میخوام دلیلشو بدونم..
اگه شما SumRes رو int تعریف کنید باید Convert.ToDouble تبدیل به Convert.Int32 بشه (به دلیل بالا)

مگر قانون foreach این نیست که ارگومان سمت چپ باید از نوع متغیری که باید پیمایش بشه باشه چرا اینجا به این صورت نوشه شده
خوب Items هم یک مجموعه (Collection) از object هست و علاوه بر اون هر چیزی (تقریبا) همیشه میتونه به object تبدیل بشه پس باز مشکلی نیست (تقریبا پدر همه چیز های موجود در دات نت object هست)