حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

تفاوت int.Parse و int.TryParse در سی شارپ چیست؟

در زبان سی شارپ دو دستور برای تبدیل رشته به نوع عدد صحیح (int) وجود دارد، یکی int.Parse و دیگری int.TryParse. اما تفاوت میان این دو دستور در چیست؟ کد زیر را در نظر بگیرید:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
int number = int.Parse("12");

کد بالا، رشته ای با مقدار 12 را به نوع عدد صحیح تبدیل می کند، اما فرض کنیم دستور بالا را به صورت زیر تغییر دادیم:

int number = int.Parse("12A");

در کد بالا به دلیل اینکته رشته 12A عدد نیست، پیغام خطا دریافت می کنیم. برای حل این مشکل می تونیم از دستور int.TryParse استفاده کنیم. بر خلاف دستور int.Parse که عددی از نوع int برمیگرداند، دستور int.TryParse مقداری از نوع bool بر میگرداند، در حقیقت زمانی که دستور int.TryParse عملیات تبدیل را با موفقیت انجام دهد مقدار true و در غیر اینصورت مقدار false را بر میگرداند. نحوه استفاده از دستور int.TryParse به صورت زیر است:

int number;
if(int.TryParse("12",out number)
{
    // success
}
else
{
    // failed
}

همانطور که مشاهده می کنید دستور int.TryParse دو پارامتر به عنوان ورودی میگیرد، یکی مقدار رشته ای جهت تبدیل و پارامتر دوم، متغیری که باید مقدار تبدیل شده در آن ریخته شود و حتماً باید از نوع out به متد پاس داده شود. استفاده از دستور int.TryParse برای جلوگیری از خطاهای زیر قابل استفاده است:

  1. وقوع خطای ArgumentNullException: زمانی رخ میدهد که پارامتر ورودی جهت تبدیل مقدار null داشته باشد
  2. وقوع خطای FormatException: زمانی که مقدار ورودی قابل تبدیل به نوع int نباشد
  3. وقوع خطای OverflowException: زمانی که مقدار رشته ای وارد شده بعد از تبدیل، بزرگتر از حد گنجایش نوع int باشد

کلیه نوع های اولیه سی شارپ، به جز string، دارای متد TryParse هستند و به همین شیوه می توان از آنها استفاده کرد. امیدوارم این نکته مورد توجه شما قرار بگیرد. ITPRO باشید

نویسنده: حسین احمدی

منبع: انجمن تخصصی فناوری اطلاعات ایران


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات