با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش #c ، را دنبال می کنند. در بخش قبلی به معرفی متغییر ها در زبان #C و بیان نکاتی در مورد آنها پرداختیم . در این بخش به معرفی انواع داده در زبان برنامه نویسی #C میپردازیم و آنها را توضیح میدهیم.
متغییرها با نوع داده تعریف میشود و زبان #C یک زبان strongly-typed (حتما باید نوع داده را مشخص کنید) است.
برای مثال :
1 | string message = "Hello World!!"; |
در بالا، عبارت “String” نشانگر اینست که متغیر message یک نوع متغیر رشته ای است، و عبارت “!!Hello World ” یک عبارت رشته ای است که به عنوان مقدار متغیر message استفاده شده است.
نوع داده به کامپایلر #C می گوید که یک متغیر چه مقداری می تواند نگه دارد. #C شامل بسیاری از انواع داده را برای انواع مختلف متغیر ها پشتیبانی میکند، به عنوان مثال String, number, float, decimal و … .
1 2 3 4 5 6 7 8 9 10 11 12 | class Program { static void Main(string[] args) { string stringVar = "Hello World!!"; int intVar = 100; float floatVar = 10.2f; char charVar = 'A'; bool boolVar = true; } } |
هر نوع داده شامل طیف خاصی از مقادیر است. به عنوان مثال، یک متغیر از نوع داده int اعدادی بین ۲،۱۴۷،۴۸۳،۶۴۸ تا ۲،۱۴۷،۴۸۳،۶۴۷- را دریافت می کند .
یا نوع داده bool می تواند تنها دو مقدار true یا false داشته باشد. جدول زیر لیست انواع داده موجود در #C همراه با محدوده مقادیر ممکن برای هر نوع داده را نشان می دهد :
Range | سایز (bits) | نوع داده | نوع داده در NET. | نام مختصر |
۰ to 255 | ۸ | عدد صحیح بدون علامت | Byte | byte |
-۱۲۸ to 127 | ۸ | عدد صحیح با علامت | SByte | sbyte |
-۲,۱۴۷,۴۸۳,۶۴۸ to 2,147,483,647 | ۳۲ | عدد صحیح با علامت | Int32 | int |
۰ to 4294967295 | ۳۲ | عدد صحیح بدون علامت | UInt32 | uint |
-۳۲,۷۶۸ to 32,767 | ۱۶ | عدد صحیح با علامت | Int16 | short |
۰ to 65,535 | ۱۶ | عدد صحیح بدون علامت | UInt16 | ushort |
-۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۸ to 9,223,372,036,854,775,807 | ۶۴ | عدد صحیح با علامت | Int64 | long |
۰ to 18,446,744,073,709,551,615 | ۶۴ | عدد صحیح بدون علامت | UInt64 | ulong |
-۳٫۴۰۲۸۲۳e38 to 3.402823e38 | ۳۲ | نوع عددی با یک اعشار شناور | Single | float |
-۱٫۷۹۷۶۹۳۱۳۴۸۶۲۳۲e308 to 1.79769313486232e308 | ۶۴ | نوع عددی با دو اعشار شناور | Double | double |
نمادهای یونیکد در متن استفاده می شود | ۱۶ | کاراکتر یونیکد | Char | char |
True or False | ۸ | نوع منطق | Boolean | bool |
پایه انواع دیگر | Object | object | ||
دنباله ای از رشته | String | string | ||
(+ or -)1.0 x 10e-28 to 7.9 x 10e28 | ۱۲۸ | نوع کسر دقیق یا انتگرال که می تواند اعداد اعشاری را تا ۲۹ رقم نشان دهد | Decimal | decimal |
۰:۰۰:۰۰am 1/1/01 to 11:59:59pm 12/31/9999 | تاریخ و زمان را نشان می دهد | DateTime | DateTime |
همانطور که در جدول فوق می بینید هر نوع داده (به جز رشته و شی) شامل محدوده (Range) مقدار است.
اگر مقدار از محدوده مجاز نوع داده خارج شود ، کامپایلر خطایی را ارائه می دهد.
به عنوان مثال، محدوده نوع داده ای اعداد صحیح (int) از ۲،۱۴۷،۴۸۳،۶۴۸- تا ۲،۱۴۷،۴۸۳،۶۴۷ می باشد .
بنابراین اگر مقداری را تعیین کنید که در این محدوده نیست، کامپایلر خطایی را برمی گرداند.
1 2 | // compile time error: Cannot implicitly convert type 'long' to 'int'. int i = 21474836470; |
در جدول فوق انواع داده ها، ستون اول برای نام مستعار داده و ستون دوم واقعی است به عنوان مثال، int یک نام مستعار (یا نام کوتاه) برای Int32 است
Int32 ساختار (struct) تعریف شده در فضای نام (namespace) سیستم است و String نیز، کلاس String را نشان می دهد.
نام نوع داده در NET. | نام نوع داده | نام مستعار |
struct | System.Byte | byte |
struct | System.SByte | sbyte |
struct | System.Int32 | int |
struct | System.UInt32 | uint |
struct | System.Int16 | short |
struct | System.UInt16 | ushort |
struct | System.Int64 | long |
struct | System.UInt64 | ulong |
struct | System.Single | float |
struct | System.Double | double |
struct | System.Char | char |
struct | System.Boolean | bool |
Class | System.Object | object |
Class | System.String | string |
struct | System.Decimal | decimal |
struct | System.DateTime | DateTime |
انواع داده ها بسته به اینکه آیا از یک نوع خاص بوده یا یک اشاره گر به داده ها در حافظه است را بیشتر بر اساس نوع مقدار محور (value type) یا نوع مرجع محور -ارجاعی (reference type) طبقه بندی می کنند.
در این بخش با انواع داده ها در زبان #C آشنا شدید.
در بخش بعدی انواع متغییر ها را بر اساس نوع مقدار محور (value type) و نوع مرجع محور (reference type) طبقه بندی کرده و آنها را توضیح می دهیم.