دسته بندی ها
12:20 1403/10/13
فرق متغیرهای object و dynamic در سی شارپ چیست ؟
سلام. لطفا بفرمایید فرق متغیرهای object و dynamic در سی شارپ چیست و از هر کدوم در چه شرایطی باید استفاده بشه.
ویرایش شده در پنج شنبه 13 دی 1403 ساعت 12:23:40
مشخصات سوال کننده :
کاربر : hamdola
امتیاز کاربر : 121
رتبه کاربر : 12
به این سوال امتیاز بدهید
0
تعداد بازدید این سوال : 306
پاسخ دهنده : saedbfd
12:49 1403/10/13
تفاوت متغیر 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 نرم افزار شما بشدت تاثیر گذار است.
آخرین سوالات ثبت شده
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
سوالات مرتبط
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.
 
ورود