تفاوت دستور switch در جاوا و سی شارپ چیست؟

Jan 22, 2026

پیام بگذارید

سلام! به عنوان تامین کننده سوئیچ، من با انواع سوئیچ ها در دنیای صنعتی سروکار داشته ام. اما امروز، کمی دنده ها را عوض می کنم و در مورد چیز متفاوتی صحبت می کنم - تفاوت بین دستور سوئیچ در جاوا و سی شارپ. ممکن است کمی دور از چرخ‌خانه معمولی من به نظر برسد، اما به من اعتماد کنید، درک این مفاهیم برنامه‌نویسی در واقع می‌تواند دیدگاه بهتری در مورد نحوه عملکرد سیستم‌های مختلف به شما بدهد و این در تجارت سوئیچ بسیار مفید است.

بیایید با اصول اولیه شروع کنیم. دستور سوئیچ در هر دو زبان جاوا و سی شارپ یک دستور جریان کنترلی است که به شما امکان می دهد یکی از بسیاری از بلوک های کد را انتخاب کنید تا بر اساس مقدار یک عبارت اجرا شود. این مانند یک دوشاخه چند طرفه در جاده است. بسته به ارزشی که با آن سروکار دارید، مسیر متفاوتی را انتخاب می کنید.

نحو و ساختار

در جاوا، سینتکس اصلی یک دستور سوئیچ به صورت زیر است:

6GK5008-0BA10-1AB2 Electrical Switch XB0086GK5008-0BA10-1AB2 Electrical Switch

switch(expression) { case value1: // کد اجرا می شود اگر عبارت == value1 break; case value2: // کدی که در صورت شکست عبارت == value2 اجرا می شود. پیش‌فرض: // اگر عبارت با هیچ موردی مطابقت نداشت، کد اجرا می‌شود }

رابیانمی تواند از نوع باشدبایت،کوتاه،کاراکتر،بین المللی،enumانواع،رشته(از جاوا 7)، و برخی از کلاس های wrapper مانندبایت،کوتاه،شخصیت، وعدد صحیح. هر کدامموردبه دنبال یک مقدار خاص است، وشکستندستور برای خروج از بلوک سوئیچ پس از یافتن یک مورد استفاده می شود. اگر فراموش کردیشکستن، اجرا به مورد بعدی "افتاده" می کند، که می تواند منجر به برخی رفتارهای غیرمنتظره شود.

در سی شارپ، سینتکس کاملاً مشابه است:

switch(expression) { case value1: // کد اجرا می شود اگر عبارت == value1 break; case value2: // کدی که در صورت شکست عبارت == value2 اجرا می شود. پیش‌فرض: // اگر عبارت با هیچ موردی مطابقت نداشت، کد اجرا می‌شود }

با این حال،بیاندر سی شارپ می تواند از نوع باشدجایگزینی،بایت،کوتاه،کوتاه،بین المللی،unint،طولانی،سر،کاراکتر،رشته،enumانواع، و نسخه‌های باطل شدن این انواع مقادیر. این محدوده وسیع تری در مقایسه با جاوا است که به شما در هنگام کار با انواع داده های مختلف انعطاف پذیری بیشتری می دهد.

سقوط - از طریق رفتار

همانطور که قبلاً اشاره کردم، اگر از جاوا استفاده نکنید، یک رفتار سقوطی داردشکستنبیانیه به عنوان مثال:

int num = 1; switch(num) { case 1: System.out.println("Case 1"); case 2: System.out.println("Case 2"); شکستن پیش فرض: System.out.println("مورد پیش فرض"); }

در این کد، حتی اگردر یک1 است، هر دو "مورد 1" و "مورد 2" چاپ خواهند شد زیرا وجود نداردشکستنبعد از اولینمورد.

از سوی دیگر، سی شارپ به طور پیش‌فرض اجازه سقوط را نمی‌دهد. اگر سعی می کنید بدون a کد بنویسیدشکستنیا الفرفتن بهبیانیه در پایان الفموردبلاک کنید، یک خطای کامپایل دریافت خواهید کرد. این یک ویژگی ایمنی است که به جلوگیری از اشکالات ناشی از سقوط تصادفی کمک می کند. اما اگر واقعاً می خواهید fall - through را در سی شارپ پیاده سازی کنید، می توانید از آن استفاده کنیدرفتن بهبیانیه به عنوان مثال:

int num = 1; switch(num) { case 1: Console.WriteLine("Case 1"); goto case 2; case 2: Console.WriteLine("Case 2"); شکستن پیش فرض: Console.WriteLine("مورد پیش فرض"); }

تطبیق الگو (C# 7.0 و بالاتر)

یکی از تفاوت های بزرگ بین جاوا و سی شارپ در مورد دستورات سوئیچ این است که سی شارپ تطبیق الگو را در دستورات سوئیچ خود از C# 7.0 معرفی کرده است. تطبیق الگو به شما این امکان را می دهد که نه تنها در مقادیر ساده بلکه در شرایط پیچیده تر نیز مطابقت داشته باشید.

به عنوان مثال، می توانید از الگوهای نوع استفاده کنید:

object obj = "سلام"; switch(obj) { case string s: Console.WriteLine($"این یک رشته است: {s}"); شکستن case int i: Console.WriteLine($"این یک عدد صحیح است: {i}"); شکستن پیش فرض: Console.WriteLine ("این چیز دیگری است"); }

همچنین می توانید از الگوهای ثابت و الگوهای رابطه ای در نسخه های بعدی سی شارپ استفاده کنید. جاوا هنوز این نوع الگوی پیشرفته - قابلیت تطبیق را در دستورات سوئیچ خود ندارد.

ملاحظات عملکرد

از نظر کارایی، هم جاوا و هم سی شارپ به خوبی عبارات سوئیچ را بهینه می کنند. در جاوا، زمانی کهموردمقادیر اعداد صحیح متوالی هستند، کامپایلر می تواند از a استفاده کندمیز سوئیچدستورالعمل، که دسترسی ثابت - زمان به مناسب را فراهم می کندموردمسدود کردن برای مقادیر غیر متوالی از a استفاده می کندسوئیچ جستجودستورالعمل، که دارای پیچیدگی زمانی لگاریتمی است.

سی شارپ نیز بهینه سازی های مشابهی دارد. کامپایلر سعی می کند از جدول پرش برای مقادیر متوالی استفاده کند که بسیار سریع است. برای مقادیر غیر متوالی، از الگوریتم جستجوی باینری استفاده می کند که عملکرد خوبی نیز دارد.

برنامه های واقعی - جهانی در تجارت سوئیچ

اکنون، ممکن است تعجب کنید که این همه برنامه‌نویسی چگونه با تامین‌کننده سوئیچ مرتبط است. خوب، در مورد آن فکر کنید. در سیستم های اتوماسیون صنعتی، اغلب برنامه های کنترلی وجود دارد که به زبان جاوا یا سی شارپ نوشته شده اند. این برنامه ها از دستورات سوئیچ برای تصمیم گیری بر اساس خوانش سنسور یا ورودی های کاربر استفاده می کنند.

به عنوان مثال، اگر از a استفاده می کنیدسوئیچ محدود D4A - 3101N عمومی - هدف، برنامه کنترل ممکن است از یک دستور سوئیچ برای تعیین اینکه بر اساس باز یا بسته بودن سوئیچ انجام شود، استفاده کند. اگر سوئیچ بسته باشد، می تواند یک موتور را راه اندازی کند. اگر باز باشد، می تواند موتور را متوقف کند.

به طور مشابه،6GK5008 - 0BA10 - 1AB2 Scalance سوئیچ الکتریکی XB008ممکن است در یک برنامه کنترلی مرتبط با شبکه استفاده شود. این برنامه می تواند از یک دستور سوئیچ برای رسیدگی به وضعیت های مختلف شبکه گزارش شده توسط سوئیچ استفاده کند، مانند عملکرد عادی، وضعیت خطا یا حالت تعمیر و نگهداری.

وسوئیچ محدود D4A - 4501N D4A - 4510Nمی تواند بخشی از یک سیستم کنترل بازوی روباتیک باشد. برنامه کنترل می تواند از یک دستور سوئیچ برای تصمیم گیری در مورد نحوه حرکت بازوی رباتیک بر اساس موقعیت شناسایی شده توسط سوئیچ محدود استفاده کند.

نتیجه گیری

در نتیجه، در حالی که دستورات سوئیچ در جاوا و سی شارپ شباهت های زیادی از نظر عملکرد اصلی دارند، تفاوت های کلیدی نیز وجود دارد. سی شارپ دارای طیف وسیع تری از انواع داده ها برای عبارت سوییچ است، به طور پیش فرض اجازه سقوط را نمی دهد و دارای قابلیت های تطبیق الگوی پیشرفته است. از سوی دیگر، جاوا دارای یک سقوط - از طریق رفتار مجاز تر است.

چه برنامه نویسی باشید که برنامه های کنترلی را برای سوئیچ های صنعتی می نویسد و چه خریداری که به دنبال سوئیچ های مناسب برای پروژه خود می گردد، درک این تفاوت ها می تواند به شما در تصمیم گیری بهتر کمک کند. اگر در بازار سوئیچ های با کیفیت بالا هستید، دوست دارم با شما گپ بزنم. ما طیف گسترده‌ای از سوئیچ‌ها را برای رفع نیازهای شما داریم، و من اینجا هستم تا به شما کمک کنم تا بهترین گزینه را برای برنامه خود پیدا کنید. بنابراین، در تماس گرفتن و شروع یک بحث تدارکات تردید نکنید.

مراجع

  • «جاوای مؤثر» اثر جاشوا بلوخ
  • «سی شارپ در عمق» نوشته جان اسکیت

ارسال درخواست