قسمت چهاردهم - ساختارهای تصمیم (بخش 2)

دستور Switchدر سی شارپ ساختاری به نام switch وجود دارد که به شما اجازه می دهد که با توجه به مقدار ثابت یک متغیر چندین انتخاب داشته باشید. دستور switch معادل دستور if تو در تو است با این تفاوت که در دستور switch متغیر فقط مقادیر ثابتی از اعداد، رشته ها و یا کاراکترها را قبول می کند. مقادیر ثابت مقادیری هستند که قابل تغیر نیستند. در زیر نحوه استفاده از دستور switch آمده است:ابتدا یک مقدار در متغیر switch که در مثال بالا testVar است قرار می دهید. این مقدار با هر یک از عبارت های case داخل بلوک switch مقایسه می شود. اگر مقدار متغیر با هر یک از مقادیر موجود در دستورات case برابر بود، کد مربوط به آن case اجرا خواهد شد. به این نکته توجه کنید که حتی اگر تعداد خط کدهای داخل دستور case از یکی بیشتر باشد نباید از آکولاد استفاده کنیم. آخر هر دستور case با کلمه کلیدی break تشخیص داده می شود که باعث می شود برنامه از دستور switch خارج شده و دستورات بعد از آن اجرا شوند. اگر این کلمه کلیدی از قلم بیوفتد برنامه با خطا مواجه می شود. دستور switch یک بخش default دارد. این دستور در صورتی اجرا می شود که مقدار متغیر با هیچ یک از مقادیر دستورات case برابر نباشد. دستور default اختیاری است و اگر از بدنه switch حذف شود هیچ اتفاقی نمی افتد. مکان این دستور هم مهم نیست اما بر طبق تعریف آن را در پایان دستورات می نویسند. به مثالی در مورد دستور switch توجه کنید:What's your favorite pet? [1] Dog [2] Cat [3] Rabbit [4] Turtle [5] Fish [6] Not in the choices Enter your choice: 2 Your favorite pet is Cat. What's your favorite pet? [1] Dog [2] Cat [3] Rabbit [4] Turtle [5] Fish [6] Not in the choices Enter your choice: 99 You don't have a favorite pet.برنامه بالا به شما اجازه انتخاب حیوان مورد علاقه تان را می دهد. به اسم هر حیوان یک عدد نسبت داده شده است. شما عدد را وارد می کنید و این عدد در دستور switch با مقادیر case مقایسه می شود و با هر کدام از آن مقادیر که برابر بود پیغام مناسب نمایش داده خواهد شد. اگر هم با هیچ کدام از مقادیر case ها برابر نبود دستور default اجرا می شود. یکی دیگر از ویژگی های دستور switch این است که شما می توانید از دو یا چند case برای نشان داده یک مجموعه کد استفاده کنید. در مثال زیر اگر مقدار number ،1 ،2 یا 3 باشد یک کد اجرا می شود. توجه کنید که case ها باید پشت سر هم نوشته شوند.switch (number) { case 1: case 2: case 3: Console.WriteLine (&quotThis code is shared by three values.&quot); break; }همانطور که قبلا ذکر شد دستور switch معادل دستور if تو در تو است. برنامه بالا را به صورت زیر نیز می توان نوشت:کد بالا دقیقا نتیجه ای مانند دستور switch دارد. دستور default معادل دستور else می باشد. حال از بین این دو دستور (switch و else if )کدامیک را انتخاب کنیم. از دستور switch موقعی استفاده می کنیم که مقداری که می خواهیم با دیگر مقادیر مقایسه شود ثابت باشد. مثلا در مثال زیر هیچگاه از switch استفاده نکنید.int myNumber = 5; int x = 5; switch (myNumber) { case x: Console.WriteLine(&quotError, you can't use variables as a value&quot + &quot to be compared in a case statment.&quot); break; }مشاهده می کنید که با اینکه مقدار x عدد 5 است و به طور واضح با متغیر myNumber مقایسه شده است برنامه خطا می دهد چون x یک ثابت نیست بلکه یک متغیر است یا به زبان ساده تر، قابلیت تغییر را دارد. اگر بخواهید از x استفاده کنید و برنامه خطا ندهد باید از کلمه کلیدی const به صورت زیر استفاده کنید.int myNumber = 5; const int x = 5; switch (myNumber) { case x: Console.WriteLine(&quotError has been fixed!&quot); break; }از کلمه کلیدی const برای ایجاد ثابت ها استفاده می شود. توجه کنید که بعد از تعریف یک ثابت نمی توان مقدار آن را در طول برنامه تغییر داد. به یاد داشته باشید که باید ثابت ها را حتما مقداردهی کنید. دستور switch یک مقدار را با مقادیر Case ها مقایسه می کند و شما لارم نیست که به شکل زیر مقادیر را با هم مقایسه کنید:switch (myNumber) { case x > myNumber: Console.WriteLine(&quotswitch staments can't test if a value is less than &quot + &quotor greater than the other value.&quot); break; }