سه شنبه ۲۷ شهريور ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

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

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

  • 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;

ما انواع داده اشاره گر را در درس های آتی مورد بحث قرار خواهیم داد.