as
کلیدواژهی as، برای تبدیلات صریح انواع مرجع استفاده میشود! یعنی اگر نوع تبدیل شده، با نوع معین شده سازگار باشد، تبدیل با موفقیت صورت خواهد گرفت و اگر ناسازگار باشد، مقدار null اختصاص خواهد یافت.
مثال
متغیری با نام o1 و o2 داریم که از نوع object میباشند. مقدار o1 یک رشته بوده و مقدار o2، یک عدد صحیح میباشد:
object o1 = "Some String"; object o2 = 5; string s1 = o1 as string; // s1 = "Some String" string s2 = o2 as string; // s2 = null
در تبدیلات، مقدار null به s2 اختصاص یافته است! چرا که o2 یک عدد بوده و یک رشته نیست!
تفاوت با cast
اگر در کد بالا، خط تبدیل زیر را هم بنویسیم:
string s3 = (string)o2;
با اجرای این کد، با خطای System.InvalidCastException رو به رو خواهیم شد! چراکه مقدار null تنها در صورت استفاده از as اختصاص مییابد و این تفاوت as و Casting (کستینگ) است.
نظرات ثبت شده بدون دیدگاه