تفاوت انواع var و dynamic
نویسنده: سیدمجتبی حسینی
تاریخ: ۱۳۹۱/۰۷/۱۱ ۲۲:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
در ابتدا به توضیحاتی درباره کنترل نوع به صورت ایستا و کنترل نوع در زمان اجرا، توجه کنید:
کنترل نوع ایستا (Static Type Checking) کامپایلر را قادر به بررسی درستی برنامه میکند، بدون آنکه آن را اجرا کند. مثلاً کد زیر با خطا مواجه میشود:int x = "5";
object y = "5"; int z = (int) y; //downcast خطای زمان اجرا و شکست
dynamic x = "hello"; // این متغیر در زمان کامپایل از نوع دینامیک است و در زمان اجرا از نوع رشتهای است var y = "hello"; //این متغیر هم در زمان کامپایل و هم در زمان اجرا از نوع رشتهای است int i = x; // خطای زمان اجرا int j = y; //خطای زمان کامپایل
همچنین متغیری که نوعشvar است میتواند مقداری از نوع dynamic را شامل شود.
dynamic x = "hello"; var y = x; // این متغیر در زمان کامپایل دینامیک است int z = y; // خطای زمان اجرا
int k=100; var data1=k; dynamic data2=k; data1="Hello World!"// خطای حین کامپایل به دلیل تغییر نوع data2="Hello World!"//بدون خطا در زمان کامپایل و یا اجرا

The dynamic keyword acts as a static type declaration in the C# type system. This way C# got the dynamic features and at the same time remained a statically typed language.
http://msdn.microsoft.com/en-us/magazine/gg598922.aspx
| dynamic | var |
نیاز به مقدار دهی اولیه نداردdynamic foo; | نیاز به مقدار دهی اولیه داردvar foo = "it is a test string"; |
| عدم نمایش intellisense | نمایش intellisense |