بررسی انواع داده ها در سی شارپ - توضیحات کامل
در مقاله قبلی در مورد متغیر ها در سی شارپ صحبت کردیم و گفته شد که یکی از الزامات در زمان تعریف متغیر مشخص کردن نوع آن است. در این مقاله سعی داریم تا با نوع داده در سی شارپ اشنا شویم. نوع داده در سی شارپ دو نوع است :
- انواع مقداری (value type)
- انواع مرجعی (reference type)
تفاوت اصلی بین این دو نواع داده در سی شارپ در نحوه ذخیره سازی انها در حافظه است. برای روشن تر شدن مساله، این را می توان گفت که متغیر هاای که از نوع value type تعریف می شوند مستقیما یک مقدار را در حافظه نگهداری می کنند در حالیکه متغیر هایی که از نوع reference type تعریف می شوند آدرس یک مقدار در حافظه را ذخیره می نمایند. از این رو در انتساب با مقدار ، از انجاکه در واقع یک مقدار جدید در متغیرجدید ذخیره می شود، در نتیجه هر متغیر یک کپی مجزا از یک مقدار را برای خود دارد و تغییر در متغیر انتساب دهنده و گیرنده تغییری در هیچ یک ایجاد نمی کند. ( البته بجز مواقعی که از کلمه کلیدی ref و out استفاده می کنیم که در مقالات بعدی در مورد آن صحبت خواهیم کرد ). اما در انتساب متغیر هایی از نوع reference چون ادرس داده در متغیر جدید کپی می شود و هر دو متغیر به یک مقدار اشاره می کنند تغییر در هر یک باعث تغییر در دیگری می شود.
انواع reference type در نوع داده در سی شارپ تقسیم می شود به :
- Class type: : در این نوع داده در سی شارپ یک ساختار شامل متغیر ها متدها و داده ها ذخیره می شود. این نوع داده می تواند توسط کاربر تعریف شود یا جزو تعاریف پیش فرض زبان باشد مثل نوع داده string و object.
مثال : تعریف یک کلاس
namespace datatype
{
public class person
{
public string name { get; set; }
public string identityNumber { get; set; }
public string print()
{
return "name=" + name + " " + " identityNumber=" + identityNumber;
}
}
class Program
{
static void Main(string[] args)
{
person operson = new person();
operson.name = "ahmad";
operson.identityNumber = "123455";
Console.WriteLine(operson.print());
}
}
}
در این مثال یک کلاس با نام person تعریف شده است وسپس در متدmain یک متغیر با نام operson تعریف کرده ایم و نوع این متغیر را از نوع کلاس تعریف شده یعنی person قرار داده ایم. به این ترتیب یک نوع داده کلاس با نام person ایجاد کردیم و متغیری از این نوع تعریف کردیم. خروجی این قطعه کد خواهد بود :
name=ahmad identityNumber=123455
- Interface type : مانند یک قرارداد عمل می کند که در این قرارداد ساختار مشخص می شود اما پیاده سازی آن به جای داخل interface در کلاس ها و struct هاای که آن را ارث بری می کنند انجام می شود. ( در مقاله مربوط به این موضوع، بیشتر بحث و توضیح داده می شود.)
- array type
- delegate type
انواع داده مقداری در نوع داده در سی شارپ تقسیم می شوند به:
- نوع داده ساده ) simple type )
- enum type : نوع داده شمارشی حاوی مجموعه ای از مقادیر است به عبارت دیگر نوع داده ای است که مقدارش به مجموعه ای از مقادیر محدود شده است. ( در مقاله مربوط به این موضوع، بیشتر بحث و توضیح داده می شود.)
مثال : تعریف نوع داده شمارشی در سی شارپ
enum days { sat , sun , Mon , true , wed , th , fri};
- نوع داده ساختمان ( struct type) : مانند نوع داده کلاس در برگیرنده ساختاری حاوی مقادیر داده ای و فانکشنی است، اما با این تفاوت که زیر مجموعه نوع داده مقداری بشمار می رود.
- nullable value type : برای هر non-nullable value type با نام T یک nullable value type با نام T? وجود دارد که علاوه بر بازه مقادیر نوعT می تواند مقدار null را نیز شامل شود.
- مثال : خطا در پذیرش مقدار null
static void Main(string[] args)
{
int num = null;
}
در قطعه کد بالا از انجا که نوع داده int به عنوان یک non-nullable value type ، مقدار null را به عنوان مقدار قبول نمی کند با خطای زیر مواجه می شویم.
- مثال : تبدیل نوع non-nullable value type به nullable value type
static void Main(string[] args)
{
int? null_num = null;
}
در مثال بالا نوع داده int اگرچه مقدار null را قبول نمی کند اما با اضافه کردن علامت ? به کلمه کلیدی int این نوع تبدیل به یک نوع داده nullable شده است.
انواع داده ساده:
نوع داده |
بازه مقدار |
bool |
true or false |
byte |
0 to 255 |
sbyte |
-128 to 127 |
short |
-32,768 to 32,767 |
ushort |
0 to 65535 |
int |
-2,147,483,648 to 2,147,483,647 |
uint |
0 to4249967295 |
long |
-9223372036854775808 to 9223372036854775807 |
ulong |
0 to 18,446,744,073,709,551,615 |
float |
-3.402823e38 to 3.402823e38 |
double |
-1.79769313486232e308 to 1.79769313486232e308 |
decimal |
±1.0 × 10e−28 to ±7.9 × 10e28 |
char |
Unicode symbols used in text |
نکته
نوع داده اولیه (primitive data type) : به انواع داده با مقدار بعلاوه نوع داده string وobject گفته می شود.
نکته
Object یک نوع داده class است که تمامی کلاس ها به صورت مستقیم یا غیر مستقیم از آن ارث بری می کنند.
گرداوری سمانه وزیریان
این فصل در یک نگاه:
آموزش ارسال پیامک، آموزش ارسال پیامک تکی و گروهی ، ارسال پیامک به صورت اختصاصی برای هر مشترک، دریافت پیامک، مشاهده وضعیت…
توضیحات کلی مجموعه: آیا می دونید قیمت نرم افزارهای مدیریت پیامک در حدود 150 هزار تومان است؟ اما توسط این دوره شما میتونید با مبلغ بسیار کمتر یک نرم افزار مدیریت پیامک رو به صورت کاملا حر…این فصل در یک نگاه:
در این فصل که فصل پایانی این دوره می باشد در مورد نحوه ساختن فایل نصبی سریع یا همان quick installer که روش پیشنهاد شده م…
توضیحات کلی مجموعه: پس از بازخوردهای بسیار خوبی که از دوره های آموزش برنامه نویسی سیستم اتوماسیون اداری و آموزش برنامه نویسی سیستم فروش و انبارداری مشاهده کردیم، تصمیم گرفتیم با توجه به درخ…این فصل در یک نگاه:
در این فصل که فصل آخر از مجموعه بزرگ آموزش سیستم اتوماسیون اداری می باشد در ابتدا در مورد اسناد و نامه های خارج از سازما…
دوره صفر تا صد آموزش برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری تحت شبکه. (توصیه می شود دومی مجموعه را حتما ببینید) امروزه اطلاعات یکی از مهمترین و با ارزشترین منابع هر اداره و یا ساز…این فصل در یک نگاه:
توضیح تنظیمات گرافیک و صدا در یونیتی پیاده سازی منو ها …
به نام خدا بازیسازی یک حرفه بسیار جذاب است و تبدیل شدن به یک بازیساز حرفهای آرزوی همه ماست. اینکه بتوانیم دنیای خاصی خلق کنیم و در این دنیا قوانین خود را پیاده کنیم، همیشه ما را به وج…این فصل در یک نگاه:
اجرای سیستم روی سیستم، قرار دادن سیستم روی سرور، تعریف Connetion String، آشنایی با فایل App.config، ساخت رشته اتصال به ص…
مهمترین تکنولوژیهای استفاده شده در این دوره پروژه محور (سیستم فروش کالا و انبارداری) طراحی گرافیکی به روش WPF (Windows Presentaion Foundation) آموزش کامل برنامه نویسی xaml (برای طراحی های …این فصل در یک نگاه:
فصل پنجم…
توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…