معرفی کامل زبان برنامه نویسی سی شارپ بخش چهارم – انواع داده در #C

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

معرفی کامل زبان برنامه نویسی سی شارپ بخش چهارم – انواع داده در #C

با درود و احترام خدمت آموزش پذیران عزیز وبسایت آموزشگاها. در این مقاله از سری مقاله های کاربردی «معرفی کامل زبان برنامه نویسی سی شارپ» به بررسی انواع داده در زبان سی شارپ می پردازیم و در انتهای مقاله با هم یک مثال کاربردی را خواهیم دید. پس با آموزشگاها همراه باشید …

 

سیستم نوع رایج در سی شارپ

زبان برنامه نویسی سی شارپ یک سیستم از نوع یکپارچه دارد. این سیستم نوع یکپارچه، سیستم نوع مشترک (Common Type System – CTS) نام دارد.

یک سیستم نوع یکپارچه دلالت بر این دارد که تمام نوع ها از جمله Primitive هایی مانند اعداد صحیح، زیرکلاسی از کلاس   هستند. برای مثال، هر نوعی یک متد را به ارث می برد.

 

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

CTS یا همان سیستم نوع مشترک که در بالا شرح داده شد، انواع داده را به دو دسته تقسیم می کند:

  1. نوع های مرجعی
  2. نوع های مقداری

نمونه های نوع های مقداری دارای هویت ارجاعی یا معناشناسی مقایسه ارجاعی نیستند – مقایسه های برابری و عدم برابری برای نوع های مقداری، مقادیر حقیقی داده را در داخل نمونه ها مقایسه می کنند، مگر اینکه عملگرهای مربوطه سربارگذاری شده باشند. نوع های مقداری برگرفته از  System.ValueType هستند، همیشه یک مقدار پیش فرض دارند و همیشه می توانند ایجاد یا کپی شوند.

چند محدودیت دیگر نوع های مقداری این است که نمی توانند از یکدیگر گرفته شوند (اما می توانند رابط ها را به کار گیرند) و نمی توانند یک constructor پیش فرض واضح (بدون پارامتر) داشته باشند. نمونه های نوع های مقداری تمام نوع های primitive مانند   int (یک عدد صحیح ۳۲ بیتی)، float (یک عدد ممیز شناور IEEE 32 بیتی)، char (یک واحد کد یونیکد ۱۶ بیتی) و System.DateTime  (یک نقطه خاص در زمان با دقت نانو ثانیه را شناسایی می کند) هستند. مثال های دیگر شامل  (enumerations)  و  struct (ساختارهای تعریف شده توسط کاربر) هستند.

برعکس، نوع های مرجعی دارای مفهوم هویت ارجاعی هستند – هر نمونه از یک نوع مرجعی ذاتا متمایز از دیگر نمونه ها است، حتی اگر داده های داخل هر دو نمونه یکی باشد. این موضوع در مقایسه های پیش فرض برابری و عدم برابری برای نوع های مرجعی مشهود است که به جای برابری ساختاری، برابری ارجاعی را تست می کنند مگر اینکه عملگرهای مربوطه سربارگذاری شده باشند (مانند مورد System.String ).

به طور کلی، همیشه ممکن نیست که یک نمونه از نوع مرجعی بسازیم یا یک نمونه موجود را کپی کنیم یا یک مقایسه مقداری بین دو نمونه موجود انجام دهیم، البته نوع های مرجعی خاصی می توانند با رو کردن یک Public Constructor یا بکارگیری یک رابط متناظر (مانند ICloneable یا IComparable )، چنین خدماتی را ارائه کنند. مثال هایی از نوع های مرجعی شامل object  (کلاس مبنای نهایی برای تمام دیگر کلاس های #C)،   (یک رشته از کاراکترهای یونیکد) System.String و System.Array (یک کلاس مبنا برای تمام آرایه های #C) هستند.

هر دو نوع داده قابل توسعه با نوع های تعریف شده توسط کاربر هستند.

 

Boxing‌ و Unboxing در زبان برنامه نویسی سی شارپ

Boxing، فرایند تبدیل یک شی نوع مقداری به مقدار یک نوع مرجعی متناظر است. عمل Boxing در زبان برنامه نویسی سی شارپ ضمنی است.

عمل Unboxing، فرایند تبدیل مقدار یک نوع مرجعی (که قبلا Boxed بوده) به مقدار یک نوع مقداری است. عمل Unboxing در #C نیازمند یک تبدیل نوع واضح است. یک شی Boxed از نوع T تنها می تواند به یک T یا یک Nullable T) Unbox) شود. لطفا به مثال زیر توجه نمایید تا عمل Boxing و Unboxing را به خوبی درک کنید.

مثال:

۱ int

۲

۳

۴

۵  foo

   =

  ۴۲

  ;

  //Value type.

  object

  bar

  =

  foo

  ;

  //foo is boxed to bar.

  int

  foo2

  =

  (

  int

  )

  bar

  ;

  //Unboxed back to value type.

امیدواریم این بخش از معرفی زبان برنامه نویسی سی شارپ و توضیح انواع داده در زبان سی شارپ برای شما آموزش‌پذیران گرامی مفید بوده و از مطالعه آن لذت برده باشید.

اشتراك گذاری نوشته

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *