تبدیل نوع توسط عملگرهای "IS" و "AS"

یکشنبه 31 خرداد 1394

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

تبدیل نوع توسط عملگرهای "IS" و "AS"

تبدیل نوع (Type casting) یکی از مهمترین اعمال در امر برنامه نویسی است .در برخی موقعیت ها میبایست یک نوع داده را به نوعی دیگر تغییر دهیم .گاهی اوقات در انجام تغییرات به پیغام خطا مواجه میشویم ، مانند "Cannot implicity convert type XXXX to YYYY".برای جلوگیری از نمایش اینگونه پیغامها ، سی شارپ دو عملگر "IS" و "AS" را برای بررسی ظرفیت آن متغیر ارائه داده است .

عملگر IS

این عملگر برای بررسی ظرفیت متغیر کارآمد میباشد .این عملگر نوعی که میخواهیم متغیر به آن تغییر کند را دریافت میکند و مقدار True یا False را بر میگرداند .

به مثال زیر توجه فرمایید :

if(obj is Employee)  
{  
   // To DO:  
}

خصوصیت عملگر IS

- عملگر IS نمی تواند بازنویسی شود (OverLoad)

- در هر دو حالت True و False همیشه در زمان کاپایل پیغام را نمایش میدهد . اما به طور معمول ارزیابی ظرفیت نوع داده را در زمان اجرا انجام میدهد .مانند تصویر زیر :

- اگر مقدار خالی (Null) نباشد عملگر  IS  مقدار True را بررسی میکند و همچنین میتواند نوع متغیر درخواستی را بدون نمایش هیچ پیغامی اعمال کند .

- متد های ناشناخته اجازه ندارند در سمت چپ این عملگر قرار بگیرند .

عملگر AS

این عملگر می تواند برای تبدیل نوع بین متغیر های موجود یا Null استفاده شود .این عملگر نوع مقدار دریافت شده را بررسی میکند و با درخواست برای تبدیل مقدار جدید مقایسه میکند و در هر صورت یک مقدار را باز میگرداند .به مثال زیر توجه فرمایید :


    Employee emp = obj as Employee;

خصوصیت های عملگر AS :

- این عملگر مانند عملگر Cast (cast operator)میباشد ،  با این حال زمانی که این عملیات غیر ممکن باشد , به جای نمایش پیغام خطا ، مقدار null را بر میگرداند .

- عملگر AS برای تبدیل متغیرهای هم معنی / هم شکل استفاده میشود .


    expression is type ? (type)expression : (type)null   

در کل سی شارپ دو عملگر برای تبدیل نوع داده ارائه داده است . 

در عملگر IS  ، برای تبدیل نوع متغیر دو عمل زیر انجام میشود :

- نوعی که این عملگر از آن استفاده میکند را بررسی نماییم .

- اگر نوع متغیر برابر بود ، سپس عملیات تبدیل اعمال میشود .

مانند زیر :


    if(obj is Employee)  
    {  
       employee = (Employee)obj;  
    }   

عملگر AS نیز همانند عملگر IS عمل می کند . بنابراین فقط برای بررسی نوع متغیر ، میبایست از عملگر "IS" استفاده کنیم و برای تبدیل نوع(Type Casting) از عملگر "AS" استفاده می کنیم .

احسان حسینی

نویسنده 42 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید