تفاوت Cast و Convert در #C

تفاوت Cast و Convert در گستردگی استفاده آنها می باشد. Cast زمانی استفاده می شود که دو متغیر مبدا و مقصد از یک خانواده باشند اما Convert حتی برای تبدیل تایپ هایی که از یک نوع نیز نمی باشند استفاده می شود مثلا با استفاده از Convert می توان String را به int و یا به DateTime  تبدیل کرد.   

 

X2 = (int) X1;
X2 = Convert.ToInt32(X1);

در مثال فوق در خط اول برای تبدیل X1 به Int از Cast استفاده شده است و در خط دوم برای این تبدیل از Convert استفاده شده است. البته در هر دو حالت فوق در صورتی که محتوای X1 عددی نباشد Exception ایجاد می شود یعنی هیچ یک از دو روش فوق Safe Cast نمی باشند. 

اگر بخواهیم SafeCast باشد باید این تبدیل را به صورت زیر بنویسیم:  

  

 var result  = int.TryParse(X1 , out  x);

در این حالت در صورتی که نتواند متغیر X1 را به int تبدیل کند محتوای result را که boolean است false برمی گرداند و درصورتی که بتواند تبدیل کند محتوای result را true برمی گرداند و مقدار تبدیل یافته جدید را در متغیر x که از نوع Out تعریف شده است، قرار می دهد.

نظرات 1 + ارسال نظر
محمد سه‌شنبه 13 تیر‌ماه سال 1391 ساعت 03:18 ب.ظ

من که گیج تر شدم

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد