سی شارپ - انواع داده

متغیر ها در سی شارپ به انواع زیر دشته بندی می شوند

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

نوع داده ی عددی

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

یک نوع داده ی عددی به طور مستقیم داده ها را در بر میگیرد. بعضی مثال ها برای آن int, char, and float هستند. که به ترتیب اعداد، حروف الفبا، اعداد اعشاری را ذخیره می کنند. رمانی که شما یک نوغ int را ایجاد می کنید ، فضایی در حافظه به آن تخصیص داده میشود.

جدول زیر انواع داده عددی را در سی شارپ 2010 لیست کرده است

Type Represents Range Default Value
bool Boolean value True or False False
byte 8-bit unsigned integer 0 to 255 0
char 16-bit Unicode character U +0000 to U +ffff '\0'
decimal 128-bit precise decimal values with 28-29 significant digits (-7.9 x 1028 to 7.9 x 1028) / 100 to 28 0.0M
double 64-bit double-precision floating point type (+/-)5.0 x 10-324 to (+/-)1.7 x 10308 0.0D
float 32-bit single-precision floating point type -3.4 x 1038 to + 3.4 x 1038 0.0F
int 32-bit signed integer type -2,147,483,648 to 2,147,483,647 0
long 64-bit signed integer type -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 0L
sbyte 8-bit signed integer type -128 to 127 0
short 16-bit signed integer type -32,768 to 32,767 0
uint 32-bit unsigned integer type 0 to 4,294,967,295 0
ulong 64-bit unsigned integer type 0 to 18,446,744,073,709,551,615 0
ushort 16-bit unsigned integer type 0 to 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 Type یک کلاس پایه ی نا محدود هست که برای تمام انواع داده در سیستم نوع مشترک ( CTS ) می تواند استفاده شود. object یک نام مستعار برای کلاس System.Object است. نوع ابجکت می تواند داده هایی با انواع تایپ ها، نوع داده ی عددی، نوع ارجاع ، انواع از پیش تعریف شده یا آنهایی که کاربر تعریف می کند، را در خود ذخیره کند. اگر چه قبل از ذخیره کردن باید تبدیل نوع صورت بگیرد.

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

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

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

شما هر نوع داده ای را می توانید در یک متغیر داینامیک ذخیره کنید.صحت یا عدم صحت داده ی ذخیره شده در زمان اجرا بررسی می شود.

شیوه ی تعریف یک نوع داینامیک به صورت زیر است :

dynamic <variable_name> = value;

برای مثال

dynamic d = 20;

صحت داده های ذخیره شده در نوع داینامیک نیز همانند نوع آبجکت ، بررسی می شود، با این تفاوت که یک متغیر از نوع آبجکت در زمان کامپایل بررسی می شود اما متغیر های داینامیک در زمان اجرا.

نوع رشته ای

نوع رشته ای (String) به شما اجازه می دهد یک رشته را در یک متغیر ذخیره کنید. نوع String یک نام مستعار برای کلاس System.String است که از کلاس object مشتق شده است. مقادیر رشته های به ، در دوصورت می توانند ذخیره شوند: به صورت یک متن شاده که بین دو علامت " " قرار گرفته و یا با همین شکل با این تفاوت که کاراکتر @ نیز قبل از آن قرار می گیرد.

برا مثال

String str = "Tutorials Point";

و برای مثال حالت دوم با علامت @

@"Tutorials Point";

انواع داده ای ارجاع تعریف شده توسط کاربر به صورت class, interface, و یا delegate. است. این انواع را در آینده مورد بررسی قرار خواهیم داد

نوع اشاره گر (Pointer)

متغیرهای نوع اشاره گر آدرس حافظه نوع داده دیگری را ذخیره می کنند. اشاره گرها در سی شارپ #C مانند اشاره گر ها در C و ++C هستند.

شیوه ی تعریف یک نوع اشاره گر به صورت زیر است:

type* identifier;

برای مثال

char* cptr;
int* iptr;

نوع اشاره گر در فصل "کدهای نا امن" بررسی خواهد شد