آموزش سی شارپ - انواع داده
متغیرها در سی شارپ به انواع زیر طبقه بندی می شوند -
- Value types (نوع داده مقداری)
- Reference types (نوع داده ارجاعی)
- Pointer types (نوع داده اشاره گر)
نوع مقداری
متغیرهای نوع مقدار را می توان مستقیماً یک مقدار نسبت داد. آنها از کلاس System.ValueType مشتق شده اند .
انواع مقادیر مستقیماً حاوی داده ها هستند. برخی از نمونه ها int، char و float هستند که به ترتیب اعداد، حروف الفبا و اعداد ممیز شناور را ذخیره می کنند. هنگامی که یک نوع int را تعریف می کنید ، سیستم حافظه را برای ذخیره مقدار اختصاص می دهد.
جدول زیر انواع مقادیر موجود در C# را فهرست می کند
نوع داده | توضیح | دامنه | مقدار پیش فرض |
---|---|---|---|
bool | مقدار بولی | True یا False | False |
byte | عدد صحیح بدون علامت 8 بیتی | 0 الی255 | 0 |
char | کاراکتر یونیکد 16 بیتی | U +0000 الی U +ffff | '\0' |
decimal | مقادیر اعشاری دقیق 128 بیتی با 28-29 رقم قابل توجه | (-7.9 x 1028 to 7.9 x 1028) / 100 الی 28 | 0.0M |
double | نوع ممیز شناور با دقت دوگانه 64 بیتی | (+/-)5.0 x 10-324 الی (+/-)1.7 x 10308 | 0.0D |
float | نوع ممیز شناور تک دقیق 32 بیتی | -3.4 x 1038 الی + 3.4 x 1038 | 0.0F |
int | نوع عدد صحیح علامتدار 32 بیتی | -2,147,483,648 الی 2,147,483,647 | 0 |
long | نوع عدد صحیح علامتدار 64 بیتی | -9,223,372,036,854,775,808 الی 9,223,372,036,854,775,807 | 0L |
sbyte | نوع عدد صحیح علامتدار 8 بیتی | -128 الی 127 | 0 |
short | نوع عدد صحیح علامتدار 16 بیتی | -32,768 الی 32,767 | 0 |
uint | نوع عدد صحیح بدون علامت 32 بیتی | 0 الی 4,294,967,295 | 0 |
ulong | نوع عدد صحیح بدون علامت 64 بیتی | 0 الی 18,446,744,073,709,551,615 | 0 |
ushort | نوع عدد صحیح بدون علامت 16 بیتی | 0 الی 65,535 | 0 |
برای به دست آوردن اندازه دقیق یک نوع یا یک متغیر در یک پلت فرم خاص، می توانید از روش sizeof استفاده کنید . عبارت sizeof(type) اندازه ذخیره سازی شی یا نوع را بر حسب بایت نشان می دهد. در زیر مثالی برای بدست آوردن اندازه نوع int در هر ماشینی آورده شده است -
using System;
namespace DataTypeApplication {
class Program {
static void Main(string[] args) {
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند -
Size of int: 4
نوع داده ارجاعی
انواع داده های ارجاعی حاوی داده های واقعی ذخیره شده در یک متغیر نیستند، اما حاوی ارجاع به متغیرها هستند.
به عبارت دیگر، آنها به یک مکان حافظه اشاره می کنند. با استفاده از چندین متغیر، انواع مرجع می توانند به یک مکان حافظه اشاره کنند. اگر داده های موجود در محل حافظه توسط یکی از متغیرها تغییر کند، متغیرهای دیگر به طور خودکار این تغییر در مقدار را منعکس می کنند. نمونه ای از انواع ارجاعی موجود در سی شارپ عبارتند از: object و dynamic و string
نوع Object
نوی شی (Object) کلاس پایه برای همه انواع داده در سی شارپ Common Type System (CTS) است. Object یک نام مستعار برای کلاس System.Object است. انواع شی را می توان مقادیری از انواع داده دیگر مانند انواع مقداری، انواع ارجاعی، انواع از پیش تعریف شده یا تعریف شده توسط کاربر نسبت داد. با این حال، قبل از تخصیص مقادیر، نیاز به تبدیل نوع دارد.
زمانی که یک نوع مقداری به نوع object تبدیل می شود، آن را boxing می نامند و از طرف دیگر، زمانی که یک نوع object به یک نوع مقداری تبدیل می شود، آن را unboxing می نامند .
object obj;
obj = 100; // این boxing است
نوع پویا
شما می توانید هر نوع مقداری را در متغیر نوع داده پویا ذخیره کنید. بررسی نوع برای این نوع متغیرها در زمان اجرا انجام می شود.
نحو نگارش برای اعلان یک نوع پویا مانند زیر می باشد:
dynamic نام_متغیر = value;
برای مثال
dynamic d = 20;
نوع داده های پویا شبیه به نوع د اده های شی هستند با این تفاوت که بررسی نوع برای متغیرهای نوع شی در زمان کامپایل انجام می شود، در حالی که برای متغیرهای نوع پویا در زمان اجرا انجام می شود.
نوع رشته (String)
نوع رشته به شما امکان می دهد هر مقدار رشته را به یک متغیر اختصاص دهید. نوع رشته یک نام مستعار برای کلاس System.String است. از نوع شی مشتق شده است. مقدار یک نوع رشته را می توان با استفاده از حروف الفبای رشته به دو شکل اختصاص داد: نقل قول و @quoted.
مثلا،
String str = "Tut24";
یک رشته @quoted به شکل زیر به نظر می رسد -
@"Tut24";
انواع داده ارجاعی تعریف شده توسط کاربر عبارتند از: کلاس ها ، رابط ها یا نماینده ها. در درس های آتی به این انواع خواهیم پرداخت.
نوع اشاره گر
متغیرهای نوع اشاره گر ، آدرس حافظه نوع دیگری را ، ذخیره می کنند. اشاره گرها در سی شارپ همان قابلیت های اشاره گرهای سی شارپ یا سی پلاس پلاس را دارند.
نحو برای اعلان نوع اشاره گر مانند زیر می باشد
type* identifier;
برای مثال
char* cptr;
int* iptr;
ما انواع داده اشاره گر را در درس های آتی مورد بحث قرار خواهیم داد.