خانه / آموزش #C / درس سوم – انواع داده های#C

درس سوم – انواع داده های#C

متغیر ها در #C به انواع زیر طبقه بندی می شوند:

  • نوع مقداری (Value Type)
  • نوع ارجاعی (Reference Type)
  • نوع اشاره‌ای (Pointer Type)

نوع مقداری (Value Type)

به متغیرهای نوع مقداری (Value Type) می توان مستقیما یک مقدار اختصاص داد. آن ها از کلاس System.ValueType مشتق شده اند.

نوع مقداری (Value Type) مستقیما شامل اطلاعات می شود. چند نمونه آن int , char , float  که اعداد , الفبا و اعداد ممیز شناور (floating point numbers) را ذخیره می کنند .

وقتی شما یک نوع int تعریف می کنید ، سیستم برای ذخیره مقدار ، بخشی از حافظه را به آن اختصاص می دهد.

جدول زیر ، لیست نوع مقداری (Value Type) موجود در C# 2010 را نشان می دهد.

برای گرفتن اندازه دقیق یک تایپ (Type) و یا متغیر روی یک پلتفرم خاص ، می توانید از متد Sizeof استفاده کنید. عبارت (Sizeof type) اندازه موردنیاز برای ذخیره سازی یک شی و یا تایپ را به بایت (byte) ارائه می دهد.

در ادامه ، مثالی از نحوه گرفتن اندازه نوع intرا مشاهده می کنید.


وقتی کد بالا کامپایل و اجراء می شود ، نتیجه زیر را تولید می کند.

نوع ارجاعی (Reference Type)

Reference Type ها  یا نوع ارجاعی اطلاعات حقیقی ذخیره شده در متغیر ها نمی باشند ، بلکه مرجعی از متغیر ها هستند. به بیانی دیگر ، آن ها به یک محل در حافظه اشاره می کنند. با استفاده از چندین متغیر ، Reference Type می تواند به یک محل در حافظه رجوع کند. اگر اطلاعات در محل حافظه توسط یکی از متغیر ها تغییر کند ، متغیر های دیگر به طور خودکار این تغییرات را در مقدار انعکاس و تغییر می دهند. چند نمونه از Built-in Reference Type یا نوع مرجعی درون ساختی، object , dynamic  و string هستند.

نوع آبجکت Object Type

Object Type کلاس پایه نهایی برای تمام Data Type ها در C# Common Type System (CTS) است.

Object یک نام مستعار برای کلاس System.Object است. می توان به Object Type هر مقدار ازType های دیگر اختصاص داد : Value Type , Reference Type  و Type های از پیش تعیین شده و یا تعریف شده توسط کاربر، اما قبل از اختصاص دادن مقدار ، به تغییر دادن Type نیاز دارد.

به تبدیل شدن مقداری از نوع Value Type به نوع Object Type عملیات Boxing و از طرفی دیگر به تبدیل شدن Object Type به Value Type عملیات Unboxing می گویند.

نوع داینامیک (Dynamic Type)

شما می توانید هرنوع از مقدار ها را در متغیر Dynamic Data Type ذخیره کنید. بررسی Type در این نوع متغیر ها در زمان اجرا انجام می شود.

سینتکس برای شناساندن Dynamic Type :

برای مثال

Dynamic Type ها مشابه Object Type ها هستند ، فقط بررسی Type در Object Type در زمان کامپایل انجام می شود ، اما در Dynamic Type این کار در زمان اجرا انجام می شود.

نوع رشته ای (String Type)

String Type به شما اجازه می دهد هر چقدر می خواهید مقدار رشته ای (کلمه,جمله) به یک متغیر اختصاص دهید. String Type یک نام مستعار برای کلاس System.String است  و از Object Type نشات گرفته است. مقدار String Type می تواند به وسیله رشته حرفی، به دو شکل  Quoted و @Quoted معین شود .

برای مثال

رشته حرفی @Quoted به شکل زیر است:

Use-Defined Reference Type شامل Class , Interface  و یا Delegate هستند.

در فصل بعدی درباره این Type ها بحث خواهیم کرد.

نوع اشاره ای (Pointer Type)

متغیر Pointer Type نشانی حافظه ی یک Type دیگر را ذخیره می کند. Pointer ها در #C قابلیت های یکسان با Pointer ها در C ویا ++C دارند.

قاعده ی تعریف Pointer Type:

برای مثال

در مورد Pointer Type در فصل “Unsafe Code” (کدهای نا امن) بحث خواهیم کرد.

درباره‌ی حمیدرضا بابازاده

کارشناس ارشد هوش تجاری در اتریش با بیش از ده سال سابقه فعالیت در زمینه تحلیل دیتا و تدریس SQL SERVER و Power BI

همچنین ببینید

درس اول – Hello World

قبل از مطالعه بلوک های ساختاری زبان برنامه نویسیC# ، به یکی از ساده ترین برنامه های C# نگاهی خواهیم انداخت تا بتوانیم از آن به عنوان یک مرجع در فصل های آینده استفاده کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

معادله امنیتی (فقط عدد بنویسید) *