اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
در ابتدا به توضیحاتی درباره کنترل نوع به صورت ایستا و کنترل نوع در زمان اجرا، توجه کنید:
کنترل نوع ایستا (Static Type Checking) کامپایلر را قادر به بررسی درستی برنامه میکند، بدون آنکه آن را اجرا کند. مثلاً کد زیر با خطا مواجه میشود:int x = "5";
object y = "5"; int z = (int) y; //downcast خطای زمان اجرا و شکست
پس از ذکر مقدمه بالا به این سؤال میپردازیم که تفاوت انواع var و dynamic چیست؟
کلمه کلیدی var و کلمه کلیدی dynamic علیالظاهر کاربرد یکسانی دارند اما تفاوت اساسی آنها عبارت است از اینکه نوع واقعی متغیرهایی از نوعvar ، توسط کامپایلر تعیین میشود. یعنی متغیرهایی از نوع var کنترل نوعشان به صورت ایستاست اما نوع واقعی متغیرهایی از نوعdynamic ، در زمان اجرا مشخص میشود. یعنی متغیرهایی از نوع dynamic کنترل نوعشان به صورت کنترل نوع در زمان اجراست. به کد زیر توجه کنید:
dynamic x = "hello"; // این متغیر در زمان کامپایل از نوع دینامیک است و در زمان اجرا از نوع رشتهای است var y = "hello"; //این متغیر هم در زمان کامپایل و هم در زمان اجرا از نوع رشتهای است int i = x; // خطای زمان اجرا int j = y; //خطای زمان کامپایل
همچنین متغیری که نوعشvar است میتواند مقداری از نوع dynamic را شامل شود.
dynamic x = "hello"; var y = x; // این متغیر در زمان کامپایل دینامیک است int z = y; // خطای زمان اجرا