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



  • نوع داده عددی (Value types)
  • نوع داده مرجع (Reference types)
  • نوع داده اشاره گر (Pointer types)





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


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


جدول زیر لیست نوع داده های مقداری موجود در سی شارپ C # در سال ۲۰۱۰ است:


Type Represents Range Default Value
bool Boolean value True or False False
byte ۸-bit unsigned integer ۰ to 255 ۰
char ۱۶-bit Unicode character U +0000 to U +ffff ‘\۰’
decimal ۱۲۸-bit precise decimal values with 28-29 significant digits (-۷٫۹ x 1028 to 7.9 x 1028) / 100 to 28 ۰٫۰M
double ۶۴-bit double-precision floating point type (+/-)۵٫۰ x 10-324 to (+/-)1.7 x 10308 ۰٫۰D
float ۳۲-bit single-precision floating point type -۳٫۴ x 1038 to + 3.4 x 1038 ۰٫۰F
int ۳۲-bit signed integer type -۲,۱۴۷,۴۸۳,۶۴۸ to 2,147,483,647 ۰
long ۶۴-bit signed integer type -۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۸ to 9,223,372,036,854,775,807 ۰L
sbyte ۸-bit signed integer type -۱۲۸ to 127 ۰
short ۱۶-bit signed integer type -۳۲,۷۶۸ to 32,767 ۰
uint ۳۲-bit unsigned integer type ۰ to 4,294,967,295 ۰
ulong ۶۴-bit unsigned integer type ۰ to 18,446,744,073,709,551,615 ۰
ushort ۱۶-bit unsigned integer type ۰ to 65,535 ۰



برای به دست آوردن اندازه دقیق یک نوع داده یا یک متغیر در یک پلت فرم خاص، شما می توانید از روش SIZEOF استفاده کنید. عبارت sizeof(type) اندازه ذخیره سازی شی یا نوع داده را به بایت نشان می دهد. در زیر یک مثال برای بدست آوردن اندازه از نوع int بر روی هر دستگاه آورده شده است:


1
2
3
4
5
6
7
8
9
10
11
12
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


نوع داده ارجاع (Reference Type)
نوع داده مرجع شامل داده های واقعی ذخیره شده در یک متغیر نیست، اما آنها شامل یک ارجاع به متغیرها هستند.


به عبارت دیگر، آنها به مکان های حافظه ارجاع می دهند. با استفاده از متغیرهای متعدد، نوع داده های ارجاع می توانند به یک محل حافظه ارجاع دهند. اگر داده ای در حافظه توسط یکی از متغیرها تغییر کند، متغیرهای دیگر به طور خودکار این تغییر را در مقدار خود منعکس می کنند. مثالهایی که از نوع داده مرجع ساخته شده اند عبارتند از: شی (object)، پویا (dynamic)، و رشته (string).


نوع شی (Object Type)
نوع شیء، کلاس پایه نهایی برای همه انواع داده در نوع سیستم رایج C # (CTS) است. شی یک نام مستعار برای System.Object class است. به انواع شی می توان مقادیر از هر نوع دیگر، نوع داده های عددی، نوع داده ارجاع، انواع از پیش تعریف شده و یا تعریف شده توسط کاربر را اختصاص داد. با این حال، قبل از اختصاص دادن مقادیر به آن نیاز به تبدیل نوع دارد.


هنگامی که یک نوع عددی به نوع شی تبدیل می شود، به آن boxing گفته می شود و از سوی دیگر، زمانی که یک نوع شی به یک نوع عددی تبدیل می شود، آن را unboxing می نامند.


1
2
object obj;
obj = 100; // this is boxing


شما می توانید هر نوع از اعداد را در متغیر با نوع داده پویا ذخیره کنید. چک کردن نوع برای این نوع متغیرها در زمان اجرا انجام می گیرد.
نحوه تعریف یک نوع پویا:


1
dynamic <variable_name> = value;




برای مثال:


1
dynamic d = 20;


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


1
String str = "Develop Zoom";



و برای @ دابل کوتیشن:


1
@"Develop Zoom";



نوع داده اشاره گر (Pointer Type)
متغیرهای نوع اشاره گر آدرس حافظه نوع داده دیگری را ذخیره می کنند. اشاره گرها در سی شارپ #C همان قابلیت های اشاره گر ها در C و ++C را دارند.
تعریف یک نوع داده اشاره گر به صورت زیر است:


1
type* identifier;


برای مثال:
1
2
char* cptr;
int* iptr;



منبع : آموزش برنامه نویسی