دسته بندی ها
12:20 1403/10/13

فرق متغیرهای object و dynamic در سی شارپ چیست ؟

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 306
پاسخ دهنده : saedbfd 12:49 1403/10/13

تفاوت متغیر dynamic و object در سی شارپ

تفاوت متغیر dynamic و object در سی شارپ

 

کاربرد متغیر dynamic در سی شارپ

در مورد متغیرهای dynamic در سی شارپ موارد زیر رو باید بدونید:

  • این نوع از متغیرها در C# نسخه 4 به بعد معرفی شده است.
  • در متغیرهای dynamic شما هر نوع مقداری را می توانید ذخیره کنید. (نحوه مدیریت متغیرها در ویژوال بیسیک هم همینطور بود.)
  • این نوع متغیر اصلا ایمن نیست. چون کامپایلر هیچ نوع اطلاعاتی در مورد نوع آن ندارد.
  • شما در ورودی توابع و متدها هم می توانید از متغیر dynamic استفاده کنید.
  • وقتی به یک متغیر dynamic مقدار دهی می کنید نیاز به Cast و تبدیل نوع نیست. اما مهم است که بدانید با مقادیری که در این متغیر ذخیره کرده اید چگونه باید کار کنید.
  • معمولا در مواردی که نیاز به مقایسه مقادیر یا ترکیب مقادیر با سایر مقادیر وجود دارد احتمال اشتباه بسیار بالا می رود چون کامپایلر تا لحظه انجام عملیات مقایسه یا ترکیب هیچ نوع اطلاعاتی در مورد نوع مقدار ذخیره شده در آن ندارد.
  • در مواردی که نیاز به کدنویسی پویا یا کار با اشیای Com دارید که نوع آنها پیچیده یا غیرقابل تشخیص است استفاده از این نوع متغیر کمک بزرگی به شما خواهد کرد.
  • همچنین استفاده از این متغیر حجم کدنویسی شما را کم می کند.

 

مثال زیر نحوه استفاده از متغیر dynamic را نشان می دهد :

public static void Main(string[] args)
{
    dynamic dyn = "String Sample";
    Console.WriteLine(dyn.Length); // correct
    dyn = 1;
    Console.WriteLine(dyn.Length); // Runtime Error
}

 

کاربرد متغیر object در سی شارپ

در مورد متغیر object هم موارد زیر رو بدونید :

  • متغیر object از C# نسخه 1 معرفی شد.
  • در متغیر object هر چیزی قابل ذخیره می باشد. در واقع پایه و چارچوب دات نت بر اساس object می باشد.
  • این نوع متغیر ایمنی ضعیفی دارد چون کامپایلر اطلاعات کافی در مورد مقادیر آن ندارد.
  • در ورودی توابع و متدها هم می توانید از متغیر object استفاده کنید.
  • موقع استفاده از این نوع متغیر باید عملیات تبدیل نوع (Cast) انجام شود. اگر مقادیر Cast نشود موقع اجرا خطا دارید.
  • استفاده از این نوع DataType زمانی مفید است که اطلاعات کافی در مورد مقادیر ندارید.

 

مثال زیر نحوه استفاده از متغیر object را نشان می دهد :

public static void Main(string[] args)
{
    object obj = "String Sample";
    Console.WriteLine(obj.Length);           // compile error
    Console.WriteLine(((string)obj).Length); // correct
}

 

نکته : تا جایی که برای شما مقدور است از این نوع DataType ها استفاده نکنید چون در Performance نرم افزار شما بشدت تاثیر گذار است.

به این پاسخ امتیاز بدهید    0
امتیاز: 1654 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود