PDA

View Full Version : switch case شرطی می شه ؟



bahar_engineer
شنبه 11 مهر 1388, 17:43 عصر
من می خوام از دستورات شرطی زیادی استفاده کنم به این شکل که تایمری دارم که متغیرش sec نام داره

باید حدودا 20 دستور شرطی بدم که اگه sec برابر فلان مقدار شد فلان عکس رو لود کنه توی فلان picturebox (امیدوارم فهمیده باشید:لبخند:)

حالا می خوام بدونم می شه اینکار و با switch case انجام داد ؟

آخه من شرط که بهش می دم توی case خطا می گیره و می گه این دستورالعمل نامعتبره


اگه از Switch case استفاده نکنم از چی استفاده کنم ؟
if خوانایی و کارایی برنامه رو کاهش نمی ده ؟

alireza_tavakol
شنبه 11 مهر 1388, 18:35 عصر
آخه من شرط که بهش می دم توی case خطا می گیره و می گه این دستورالعمل نامعتبره


اگه شرط جلوی case رو می نوشتید بهتر می شد کمکتون کرد ولی...
http://barnamenevis.org/forum/showthread.php?p=814151#post814151

bahar_engineer
یک شنبه 12 مهر 1388, 10:12 صبح
ظاهرا متوجه نشدید

من منظورم اینه که بخوام در دستور case شرطی رو چک کنه مثلا یه اینطور چیزی



try
{
switch(sec)
{
case (sec>10 && sec<20)
.......
break;
case (sec>20 && sec<30)
........
break;
}
}
catch
{
}


یعنی می خوام case برای مقادیر بین دو بازه ، دستور خاصی رو اجرا کنه ...
حالا در قسمت swithc به جای sec می شه مقدار بولین هم گذاشت که با شرط ها بخونه اما در هر صورت خطا می گیره

اینطور دستورات شرطی رو می شه با switch - case در آورد؟

سار
یک شنبه 12 مهر 1388, 10:13 صبح
http://msdn.microsoft.com/en-us/library/06tc147t(VS.71).aspx

bahar_engineer
یک شنبه 12 مهر 1388, 10:44 صبح
جناب سار این لینکی که شما دادین چه ربطی به سوال من داشت؟

این کجاش شرط رو چک کرده ؟

یه case ساده هست ... اینو که می دونم

می خواستم مقادیر یک بازه رو چک کنه .. یعنی توی یه بازه یه دستور خاص رو انجام بده

alireza_tavakol
یک شنبه 12 مهر 1388, 15:07 عصر
می خواستم مقادیر یک بازه رو چک کنه .. یعنی توی یه بازه یه دستور خاص رو انجام بده
شما نمی تونید با دستور switch در C#‎‎‎‎ مثل ساختار select case در VB و یا مثل ساختار case of در Delphi کار کنید ( البته تا اونجایی که من خبر دارم)

ولی برای پیاده سازی این ساختار باید به شکل زیر عمل کنید
switch (Set)
{
case 1:
case 2:
case 3:
case 4:
case 5:
....
break;

}

در ایم مثال اگه مقدار متغییر set بین اعداد 1 تا 5 باشه دستور .... اجرا خواهد شد :بامزه:

البته برای کار که شما می خواهید انجام دهید این کار خوانایی برنامه رو خیلی پایین میاره پس بهتر از ساختار شرط های تو در تو استفاده کنید

if (sec>10 && sec<20) //case1 in the switch
....
else if (sec>20 && sec<30) //case2 in the switch
....
else if (sec>30 && sec<40) //case3 in the switch
....
else //default in switch
....

bahar_engineer
یک شنبه 12 مهر 1388, 16:12 عصر
ممنون این شد جواب

البته خیلی خوانایی کاهش پیدا می کنه با همون if های تو در تو هم

alireza_tavakol
یک شنبه 12 مهر 1388, 16:21 عصر
البته اگه بخواهید الزاما" از ساختار switch استفاده کنید راه دیگری وجود داره :چشمک:

شما در یک struct ویا در یک کلاس این شرط ها رو چک کنید و در نهایت خروجی رو در یک متغییر از نوع enum قرار دهید و سپس در برنامه از ساختار switch استفاده نمایید و در جلوی هر case مقداری از enum رو قرار دهید تا به این شکل خوانایی برنامه نوشته شده به حداکثر ممکن برسه

alireza_s_84
یک شنبه 12 مهر 1388, 17:22 عصر
ظاهرا متوجه نشدید

من منظورم اینه که بخوام در دستور case شرطی رو چک کنه مثلا یه اینطور چیزی



try
{
switch(sec)
{
case (sec>10 && sec<20)
.......
break;
case (sec>20 && sec<30)
........
break;
}
}
catch
{
}
یعنی می خوام case برای مقادیر بین دو بازه ، دستور خاصی رو اجرا کنه ...
حالا در قسمت swithc به جای sec می شه مقدار بولین هم گذاشت که با شرط ها بخونه اما در هر صورت خطا می گیره

اینطور دستورات شرطی رو می شه با switch - case در آورد؟
دوست عزیز در عبارت swithc نمیتوان از عبارات شرطی و یا حتی چند Case استفاده کرد.(البته در #C) و ناگزیر باید از if استفاده کرد.
موفق باشید