محل تبلیغات شما

در نسخه ۴ سی شارپ؛ مایکروسافت نوع جدیدی از داده ها را معرفی کرده است: نوع داینامیک(dynamic). این داده ها در واقع نوعی استاتیک هستند؛ اما بر خلاف دیگر انواع استاتیک؛ اعضای (بالقوه) اشیاء دینامیک برای کامپایلر بررسی نمی شود. این موضوع برخی مزایای زبان های تایپ شده به صورت هفتگی/دینامیک را در اختیار شما قرار می دهد؛ در حالی که مزایای زبان هایی که در تمام موارد؛ قویاً تایپ شده است را نیز حفظ می کند.

بیان یک نوع داده ی داینامیک مشابه تعریف دیگر داده ها است – فقط کافی است به جای نوع داده از کلید واژه dynamic استفاده شود:

dynamic d1;
dynamic d2 = A string”;
dynamic d3 = 42;

اکنون سه شیء متفاوت را تعریف کرده اید؛ اولین آنها در واقع یک شیء تهی (null) می باشد که هیچ مقداری ندارد؛ در حالی که دومی یک رشته و سومی یک عدد صحیح ست. مفسر بر اساس آنچه که به متغیرها تخصیص داده اید؛ در مورد این امر به صورت اتوماتیک؛ هنگام اجرای برنامه تصمیم می گیرد. که این درواقع به آن معنا است که کامپایلر بررسی نخواهد کرد که شما با این نوع متغیرها چه کرده اید. این موضوع را می توانید در مثال بعدی مشاهده کنید:

dynamic d1;
dynamic d2 = A string”;
dynamic d3 = 42;
Console.WriteLine(d2.Length);
Console.WriteLine(d3.Length);

رشته ها یک ویژگی length (طول) دارند؛ که تصمیم می گیرد طول رشته چقدر باید باشد؛ اما یک عدد صحیح از این ویژگی برخوردار نیست. من سعی کرده ام که از این ویژگی در هر دو متغیر استفاده کنم و کامپایلر نیز در این مورد خطایی اعلام نکرده است – اگر این متغیرها به صورت یک رشته و یک عدد صحیح تعریف شده بودند؛ کامپایلر حتماً خطا می گرفت. اما از آنجایی که این داده ها به صورت داینامیک بیان شده اند؛ کامپایلر فقط کدنویسی را کامپایل کرده و اجرا می نماید. با این حال؛ به محض این که مفسر برنامه به خط آخر می رسد؛ یک خطا رخ خواهد داد؛ زیرا بدیهی است که شما نمی توانید به آن ویژگی دست یابید که اصلاً وجود ندارد.

این مثال همچنین خطر استفاده از انواع داده های دینامیک را نشان می دهد؛ شما باید از آنچه می خواهید انجام دهید آگاهی کامل داشته باشید و مطمئن باشید که همه چیز را با املای درست نوشته اید و نیز این که ویژگی ها و متدهای صحیحی را فراخوانی کرده اید؛ زیرا کامپایلر کار شما را دوباره چک نمی کند.

یک شیء دینامیک

یک کلید واژه ی دینامیک؛ می تواند البته برای انواع پیچیده تری از اعداد صحیح و رشته ها به کار گرفته شود. یک مثال بسیار خوب در این زمینه، هنگامی است که بخواهید مانند زیر؛ یک شیء بی نام را در کد نویسی لحاظ کنید.

dynamic user = new
{
Name = John Doe”,
Age = 42
};
Console.WriteLine(user.Name + ” is ” + user.Age + ” years old”);

این به شما اجازه می دهد که یک شیء را بدون این که ابتدا یک کلاس را برای آن تعریف کنید؛ ایجاد نمایید. کلیدواژه دینامیک را می توان برای نگه داشتن آن به کار گرفت، البته کلید واژه var را نیز می توان استفاده نمود که در بیشتر موقعیت ها مناسب است.

چون نوع داده ها داینامیک است؛ ممکن است این طور فکر کنید که مشابه زیر، می توانید فقط در ادامه ویژگی ها را به آن اضافه کنید:

dynamic user = new
{
Name = John Doe”,
Age = 42
};
user.HomeTown = New York”;

از آنجایی که روی داده های داینامیک، زمان کامپایل شدن کدنویسی کاری انجام نمی شود؛ این کد در واقع اجرا می شود؛ زیرا کامپایلر در واقع؛ وجود ویژگی HomeTown را تأیید نمی کند؛ اما به محض این که به خط آخر برسد؛ یک خطا رخ می دهد. در حالی که نوع داینامیک بسیار داینامیک می باشد؛ به شما اجازه نمی دهد که به صورت دینامیک ویژگی هایی را به آن اضافه کنید. برای این منظور، شما می توانید از یک ExpandoObject استفاده کنید که در مقاله بعدی بحث و بررسی می شود.

آموزش جدول ها در css به زبان ساده

آموزش انواع داینامیک داده ها در سی شارپ

نوار جستجوی UI در برنامه های iOS با نمایش جدولی

یک ,ها ,داده ,dynamic ,نوع ,ویژگی ,داده ها ,به صورت ,به آن ,این که ,یک شیء ,user new{name john

مشخصات

تبلیغات

محل تبلیغات شما

آخرین ارسال ها

برترین جستجو ها

آخرین جستجو ها