انواع داده در سی شارپ، به نوع مقدارهای مختلفی گفته می‌شود که می‌توانیم در برنامه‌های سی شارپ پردازش کرده یا آن‌ها را ذخیره کنیم. سی شارپ دارای دو نوع اصلی به نام‌های «نوع‌های مقدار» (Value Data Types) و «نوع‌های ارجاعی» (Reference Data Types) است. از نوع مقدار در سی شارپ، برای ذخیره مستقیم داده‌ها استفاده می‌شود. در حالی که نوع ارجاعی، آدرس محل ذخیره‌سازی داده اصلی را در حافظه ذخیره می‌کند. درک انواع داده در سی شارپ بسیار مهم است. زیرا روش استفاده از این دیتا تایپ‌ها تاثیر مستقیمی در مدیریت حافظه و بهینه‌سازی عملکرد برنامه دارد.

فهرست مطالب این نوشته
997696

در این مطلب از مجله فرادرس، انواع داده در سی شارپ را با کمک مثال‌های مختلفی بررسی کرده‌ایم. هر کدام از نوع‌های مقدار و ارجاعی، شامل زیرمجموعه‌های مختلفی هستند. همه این زیر مجموعه‌ها را با کمک مثال‌های کدنویسی شده معرفی کرده‌ایم. به عنوان توسعه‌دهنده سی شارپ لازم است بر روی کار با انواع داده مسلط باشیم.

انواع داده در سی شارپ چه هستند؟

به طور کلی، انواع داده‌های سی شارپ را می‌توان در سه دسته زیر، طبقه‌بندی کرد.

  • «نوع‌های مقدار» (Value Types)
  • «نوع‌های ارجاعی» (Reference Types)
  • «نوع‌های اشاره‌گر» (Pointer Types)

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

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

وجود انواع داده در زبان سی شارپ اهمیت زیادی دارد. در فهرست زیر، مهم‌ترین مزایای وجود انواع مختلف را نوشته‌ایم.

  • «امنیت نوع» (Type Safety): زبان برنامه نویسی سی شارپ از نوع زبان‌های با نوع‌دهی ایستا است. به این معنا که نوع متغیرها و عبارت‌ها، از قبل تعریف شده است. شناخت انواع داده، تضمین می‌کند که توسعه‌دهندگان مقادیر مناسبی را به متغیر‌ها اختصاص بدهند. درنتیجه با «خطای نوع»‌ (Type Error) در طول زمان کامپایل و اجرای برنامه روبه‌رو نمی‌شوند.
  • «تخصیص حافظه» (Memory Allocation): انواع داده، مقدار فضای مورد نیاز برای ذخیره‌سازی متغیر‌ها را مشخص می‌کنند. با شناخت صحیح نوع‌ داده، توسعه‌دهندگان می‌توانند فرایند تخصیص حافظه را بهینه‌سازی کرده و از مصرف غیرضروری حافظه جلوگیری کنند.
  • «یکپارچگی داده‌ها» (Data Integrity): هر نوع‌ داده‌ای، اندازه و محدودیت‌های مخصوص به خود را دارد. با شناخت صحیح انواع داده می‌توانیم نوع مناسب را برای مقدار داده‌ای خاص در نظر بگیریم. این کار باعث می‌شود که از یکپارچگی داد‌ها مطمئن شویم. همچنین داده‌ها خراب نشده یا از دست نمی‌روند.
  • عملیات ریاضی: انواع داده در سی شارپ، مشخص می‌کنند که کدام عملیات ریاضی را می‌توان بر روی داده‌ها اعمال کرد. بعد از اینکه دیتا تایپ‌های قابل استفاده در عملیات ریاضی را به درستی شناختیم، نتایج درستی در محاسبات بدست میاوریم. تغییر ناگهانی نوع می‌تواند منجر به بروز مشکلات عجیبی شود. شناخت صحیح انواع داده از بروز این مشکلات جلوگیری می‌کند.
  • «امضای تابع» (Function Signatures): انواع داده یکی از مهم‌ترین بخش‌های مربوط به امضای تابع در سی شارپ هستند. اگر نوع پارامترها و مقادیر برگشتی تابع مورد نظر خود را به درستی بدانیم، آن وقت می‌توانیم توابع را به شکل صحیح فراخوانی کنیم. یعنی اینکه می‌توانیم داده‌های درست را از ورودی دریافت کرده و به تابع ارسال کنیم. از طرف دیگر با داده‌های برگشت‌داده شده از تابع هم می‌توانیم کارهای درستی انجام بدهیم.
چند مکعب مربع رنگی و شیشه‌ای در فضا معلق هستند.

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

در سی شارپ، قبل از استفاده از متغیرها باید نوع آن‌ها را مشخص کنیم. زیرا زبان برنامه نویسی سی شارپ از نوع «زبان‌های با نوع‌دهی قوی» (Strongly Typed Language) است. یعنی نمی‌توان هر مقداری را در هر متغیری قرار داد.

در کادر زیر، سینتکس مربوط به تعریف متغیر، همراه با مشخص کردن نوع آن را نوشته‌ایم.

پارامتر‌های استفاده شده در سینتکس بالا به شرح زیر هستند.

  • <data_type>: نوع داده قابل ذخیره‌سازی در متغیر را در این قسمت مشخص می‌کنیم.
  • <variable_name>: نام متغیر را به جای این پارامتر می‌نویسیم.
  • <value>: مقدار خاصی را برای مقداردهی اولیه به متغیر تعیین می‌کنیم.

در کادر زیر، مثالی درباره نمایش مشخصات دانش‌آموز با استفاده از زبان برنامه نویسی سی شارپ نوشته و اجرا کرده‌ایم.

بعد از نوشتن کد بالا در محیط برنامه نویسی و اجرای آن، خروجی به شکل زیر تولید شده و نمایش داده می‌شود.

Student Name: Mostafa Rashidi
Age: 20
Marks Percentage: 85.5%
Grade: A
Enrolled: True

در ادامه مطلب، تمام انواع داده موجود در سی‌ شارپ را یک به یک بررسی کرده و هر کدام را با کمک مثال‌های کدنویسی شده توضیح داده‌ایم.

یادگیری سی شارپ در فرادرس

زبان #C یکی از زبان‌های مشهور و پُرکاربرد در حوزه‌های تجاری و صنعتی است. به همین دلیل، افراد زیادی تمایل به یادگیری این زبان برنامه نویسی دارند. فرادرس برای آموزش زبان برنامه نویسی سی شارپ، محتواهای متنی و فیلم‌های آموزشی متنوعی تولید و منتشر کرده است. هدف فرادرس، این است که هم دانشجویان و محصلان بتوانند از فیلم‌های آموزشی آن به عنوان منابع کمک درسی استفاده کنند و هم افراد شاغل یا جویای کار بتوانند مهارت‌های عملی خود را ارتقا دهند.

مجموعه آموزش برنامه نویسی سی شارپ C#‎ – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی سی شارپ هدایت شوید.

#C یکی از زبان‌های برنامه نویسی شی‌گرا است. این زبان توسط شرکت مایکروسافت طراحی شده است. بنابراین به خوبی با بیشتر محصولات این شرکت، سازگار می‌شود. زبان سی شارپ کاربردهای بسیار متنوعی دارد. فرادرس با هدف پوشش دادن انواع حوزه‌های فعالیت سی شارپ، مجموعه آموزشی اختصاصی برای این زبان، ایجاد کرده است. در پایین، چند مورد از فیلم‌های آموزشی این مجموعه را معرفی کرده‌ایم. در صورت تمایل بر روی تصویر بالا کلیک کرده و باقی فیلم‌های این مجموعه را نیز بررسی کنید.

در ادامه مطلب، با نوع مقدار در سی شارپ آشنا شده‌ایم.

نوع مقدار در سی شارپ

متغیرهایی که با «نوع‌ مقدار» (Value Type)، نوع‌دهی شده‌اند را می‌توان به شکل مستقیم مقداردهی کرد. این متغیرها از کلاس System.ValueType  مشتق شده‌‌اند.

متغیرهای نوع‌-مقدار به شکل مستقیم، مقدار خاصی را در خود نگهداری می‌کنند. به عنوان چند مثال از نوع‌های مقدار می‌توانیم به «Int» و «Char» و «Float» اشاره کنیم. این نوع‌ها به ترتیب برای ذخیره‌سازی اعداد صحیح، کاراکترهای نوشتاری و اعداد با ممیز شناور به کار برده می‌شوند. وقتی متغیری با نوع «Integer» تعریف می‌کنیم، کامپیوتر مقدار مشخصی از حافظه را به این متغیر اختصاص می‌دهد. تمام اعداد درون محدوده Integer در این مقدار حافظه، قابل ذخیره‌سازی هستند. نماد Int مخفف کلمه Integer است.

انواع مقدار، مقادیر واقعی را در خود ذخیره می‌کنند. این نوع‌ها هر کدام چندین زیر مجموعه مختلف دارند که در فهرست زیر به آن‌ها اشاره کرده‌ایم.

  • «انواع یکپارچه» (Integral Types): این نوع‌ شامل «Int» و «Byte» و «Long» و غیره است.
  • «انواع شامل ممیز شناور» (Floating-point Types): این نوع‌ شامل Float و «Double» و «Decimal» است.
  • «نوع کاراکتر» (Character Type): این نوع‌ شامل Char است.
  • «نوع بولین» (Boolean Type): این نوع‌ شامل «Bool» است.
  • نوع Enumerations: این نوع‌ شامل «Enum» است.
  • نوع Structs: این نوع‌ شامل «Struct» است.

در ادامه این بخش، تمام نوع‌های نام‌برده شده در فهرست بالا را یک به یک معرفی کرده‌‌ایم.

انواع داده یکپارچه

در فهرست زیر «انواع یکپارچه» (Integral Types) قابل تخصیص به متغیرهای مختلف را معرفی کرده‌ایم.

  • Byte: این نوع به اندازه ۱ بایت حافظه اشغال می‌کند. محدوده اعداد قابل ذخیره‌ در این نوع از 0 تا 255 است.
  • Sbyte: نوع Sbyte از ۱ بایت حافظه استفاده می‌کند. این نوع می‌تواند عددهایی بین -128  تا 127 را ذخیره کند.
  • Short: نوع Short از ۲ بایت حافظه استفاده می‌کند. این نوع می‌تواند عددهایی بین -32,768 تا 32,767 را ذخیره کند.
  • Ushort: این نوع به اندازه ۲ بایت حافظه اشغال می‌کند. محدوده اعداد قابل ذخیره در این نوع از 0 تا 65,535 است.
آیکون‌های رنگارنگ انواع متغیر در حال شناور بودن اطراف مانیتور کد سی‌شارپ
  • Int: این نوع ۴ بایت حافظه مصرف می‌کند. نوع int می‌تواند عددهایی از -2,147,483,648 تا 2,147,483,647 را ذخیره کند.
  • Uint: نوع Uint اندازه ۴ بایت حافظه اشغال می‌کند. محدوده اعداد قابل ذخیره در این نوع از 0 تا 4,294,967,295 است.
  • Long: نوع Long به مقدار ۸ بایت حافظه مصرف می‌کند. این نوع می‌تواند عددهایی از -9,223,372,036,854,775,808 تا 9,223,372,036,854,775,807 را ذخیره کند.
  • Ulong: این نوع ۸ بایت حافظه اشغال می‌کند. محدوده اعداد قابل ذخیره در این نوع از 0 تا 18,446,744,073,709,551,615  است.

کد نوشته شده در کادر زیر، بعضی از اطلاعات مربوط به دانش‌آموز و کارمند خاصی را ذخیره‌ کرده و در خروجی نمایش می‌دهد. این کد فقط برای نشان دادن روش استفاده از «انواع یکپارچه» نوشته شده است.

بعد از نوشتن کد بالا و اجرای آن، خروجی به شکل زیر در کنسول سی شارپ، نمایش داده می‌شود.

Student ID: 1024
Employee Salary: 5000000
Experience (Years): 10

انواع شامل ممیز شناور

در فهرست زیر، «انواع شامل ممیز شناور» (Floating-point Types) را معرفی کرده‌ایم.

  • Float: این نوع به اندازه ۴ بایت حافظه مصرف می‌کند. دقت آن حدود ۶ تا ۷ رقم اعشار است.
  • Double: هر متغیر با نوع Double به اندازه ۸ بایت حافظه نیاز دارد. دقت این نوع حدود ۱۵ تا ۱۶ رقم اعشار است.
  • Decimal: هر متغیر Decimal به اندازه ۱۶ بایت حافظه استفاده می‌کند. دقت نوع Decimal حدود ۲۸ تا ۲۹ رقم اعشار است.

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

بعد از نوشتن کد بالا در محیط برنامه نویسی #C و اجرای آن، خروجی به شکل زیر، نمایش داده می‌شود.

Student GPA: 3.85
Distance to Moon (km): 384400.5
Bank Account Balance: $15249.75

نکته: بهتر است که از دیتا تایپ‌های Float و Double برای انجام محاسبات عمومی و از نوع Decimal برای انجام محاسبات دقیق مالی استفاده کنید.

نوع کاراکتر و بولین

در فهرست زیر «نوع کاراکتر» (Character Type) و «نوع بولین» (Boolean Type) را معرفی کرده‌ایم.

  • Char: به اندازه ۲ بایت حافظه اشغال می‌کند. از نوع Char برای ذخیره کاراکتر استفاده می‌شود.
  • Bool: نوع Bool به اندازه ۱ بایت حافظه مصرف می‌کند. فقط دو مقدار true  یا false  را در خود نگه می‌دارد.
صفحات مختلف سایت اینترنت بر روی یکدیگر تلنبار شده‌اند.

در کد پایین از نوع کاراکتر برای نشان دادن بخش و از نوع بولین برای نشان دادن وضعیت تحصیلی استفاده کرده‌ایم.

بعد از نوشتن کد بالا در محیط برنامه نویسی #C و اجرای آن، خروجی به شکل زیر، نمایش داده می‌شود.

Graduated: True
Class Section: B

نوع Enumerations

نوع «Enumerations» با نام «نوع شمارشی» هم شناخته می‌‌شود. enum در سی شارپ، یکی از انواع داده ویژه است. از این نوع برای ساخت مقادیر ثابت در مجموعه‌ای دارای نام، استفاده می‌شود.

در کادر زیر، مثالی را پیاده‌سازی کرده‌ایم که در آن، چند عبارت مختلف در مجموعه‌ای نام‌دار – JobLevel  - ذخیره شده‌اند. در این حالت برای دسترسی به محتوی این مجموعه باید از نام آن استفاد کنیم.

بعد از اجرای کد بالا، خروجی به شکل Current Job Level: Mid تولید شده و نمایش داده می‌شود.

نوع Struct

نوع «Struct» در بسیاری از زبان‌های خانواده C وجود دارد. این نوع توسط کاربر تعریف شده و با هدف دسته‌بندی چند متغیر مختلف ولی مرتبط به هم در یک نوع جدید به کار برده می‌شود.

در کادر زیر، با کمک کلمه کلیدی struct، نوع جدیدی به نام Employee ساخته‌ایم. این متغیر برای نمایش اطلاعات مربوط به کارمندان استفاده شده است.

بعد از نوشتن کد بالا در محیط برنامه نویسی #C و اجرای آن، خروجی به شکل زیر، نمایش داده می‌شود.

Employee ID: 101
Employee Name: Zoya
Employee Salary: $60000.5

نوع‌های ارجاعی در سی شارپ

متغیرهایی که از نوع ارجاعی هستند، داده‌های اصلی را ذخیره نمی‌کنند. آن‌ها فقط آدرس محل ذخیره داده در حافظه را نگهداری می‌کنند. به عبارت دیگر، انواع ارجاعی به موقعیت‌های مشخصی بر روی حافظه اشاره می‌کنند. چندین متغیر ارجاعی مختلف، همزمان با هم می‌توانند به موقعیت مشخصی در حافظه اشاره کنند. اگر یکی از این متغیرها داده‌های ذخیره شده در آن خانه حافظه را تغییر دهد، باقی متغیر‌ها هم مقدار جدید را نشان می‌دهند. به عنوان مثال‌هایی از «نوع‌های ارجاعی درونی» (Built-In Reference Types) در #C می‌توان به موارد زیر اشاره کرد.

  • «شیء» (Object)
  • متغیرهای «پویا» (Dynamic)
  • «رشته» (String)
  • «آرایه» (Array)
نوع‌های ارجاعی در سی شارپ

برای اینکه بر روی کار با دیتا تایپ‌های مختلف در زبان #C مهارت بیشتری کسب کنید، پیشنهاد می‌کنیم فیلم آموزش رایگان انواع داده و متغیر در سی شارپ همراه با کاربرد آن‌ها با مثال را در فرادرس مشاهده کنید. به منظور کمک به مخاطبان مجله، لینک دسترسی به این فیلم را در پایین نیز قرار داده‌ایم.

در ادامه مطلب، هر چهار نوع نام‌ برده شده در فهرست بالا را یک به یک بررسی کرده‌ایم.

مکعب‌های شیشه‌ای رنگی در کنار یکدیگر قرار گرفته‌اند.

نوع شیء

در زبان سی شارپ، «نوع شیء» (Object Type) پایه‌ای‌ترین کلاس در «سیستم نوع مشترک» (Common Type System |‌ CTS) است. «شیء» (Object) نام دیگری برای کلاس System.Object  است. «انواع شیء» در سی شارپ می‌توانند مقادیری از هر نوع دیگر را در خود ذخیره کنند. برای مثال می‌توانیم به انواع مقدار، انواع ارجاعی، انواع «درونی» (Built-In) یا انواع ساخته شده توسط کاربر اشاره کنیم. اما قبل از تخصیص دادن هر مقدار خاصی به آن‌ها باید نوع آن مقدار را تغییر بدهیم.

برای اینکه بر روی این نوع و روش تعریف و کار با آن حرفه‌ای شوید باید با مفهوم شیءگرایی در سی شارپ آشنا باشید. شیءگرایی یکی از برجسته‌ترین نقاط قوت زبان سی شارپ است. به منظور کسب اطلاعات درباره شیءگرایی در این زبان می‌‌توانید مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.

وقتی که «نوع مقدار» به «نوع شیء» تغییر می‌کند، به این عملیات «Boxing» گفته می‌شود. از طرف دیگر، اگر نوع شیء را به نوع مقدار تغییر دهیم به این عملیات «Unboxing» می‌گویند.

در کادر زیر، مثالی از انجام عملیات Boxing را بررسی کرده‌ایم.

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

بعد از نوشتن کد بالا در محیط برنامه نویسی #C و اجرای آن، خروجی به شکل زیر، نمایش داده می‌شود.

Student ID: 1001
Student Name: Mostafa Rashidi

نوع پویا

توسعه‌دهندگان زبان سی شارپ می‌توانند هر «نوع مقداری» را در متغیرهایی با «نوع پویا» (Dynamic Data Type) ذخیره کنند. نوع مقادیر ذخیره شده در این متغیرها در زمان اجرا بررسی می‌شود.

در کادر زیر، سینتکس مربوط به تعریف نوع پویا نوشته شده است.

همین طور که از سینتکس بالا مشخص است، برای تعریف نوع پویا از کلمه کلیدی dynamic  استفاده کرده و سپس نام متغیر را می‌نویسیم.

در کد پایین، متغیر پویا تعریف کرده‌ایم. یک بار به این متغیر عدد صحیح 10  اختصاص داده شده است و دفعه بعد عبارت رشته‌ای «Hello, World!» .

بعد از اجرای کدهای بالا، خروجی زیر، نمایش داده می‌شود.

Dynamic value: 10
Dynamic now contains: Hello, World!

نوع‌های پویا شبیه به نوع شیء هستند. به غیر از این مورد که بررسی نوع برای نوع شیء در زمان کامپایل انجام می‌شود. اما برای متغیرهایی با نوع پویا، بررسی نوع در زمان اجرا انجام می‌شود.

نوع رشته یا استرینگ

نوع استرینگ به توسعه‌دهندگان کمک می‌کند، چندین کاراکتر را به متغیرها تخصیص بدهند. نوع رشته نام دیگری برای کلاس System.String  است. این نوع از نوع شیء مشتق شده است. توسعه‌دهندگان می‌توانند با استفاده از «رشته‌های متنی» (String Literals) به متغیرهای این نوع، مقدار اختصاص بدهند. برای انجام این کار در سی شارپ، دو روش مختلف وجود دارد.

  • با علامت کوتیشن
  • با علامت «@» و کوتیشن – از این تکنیک زمانی استفاده می‌کنیم که در داخل رشته مورد نظر، نماد‌ها و کاراکترهای ویژه وجود داشته باشند. برای مثال به رشته @”C:UsersAliDocuments”; توجه کنید.
مسیرهای سبز و قرمز با مکعب‌های رنگی بر روی پس زمینه سیاه

در کد زیر، مقدارهایی با نوع رشته را به متغیرهای مختلف، تخصیص داده‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و نمایش داده می‌شود.

Full Name: Mostafa Rashidi

نکته: برای کار با رشته‌ها به شکل موثر می‌توانید از StringBuilder  استفاده کنید.

در کادر زیر رشته‌ای را با علامت کوتیشن و @  تعریف کرده‌ایم.

از جمله نوع‌های ارجاعی تعریف شده توسط کاربر می‌توان به کلاس‌ها اشاره کرد.

نوع آرایه

آرایه‌ در برنامه نویسی، برای نگهداری چند مقدار مختلف با نوع یکسان به کار برده می‌شود. همین طور که مشاهده می‌کنید در کادر زیر، آرایه‌ای را تعریف کرده‌ایم. با کد string[] به این آرایه گفته‌ایم که متغیرهای ذخیره‌سازی شده از چه نوعی هستند. نوع رشته، مربوط به متغیرهای ذخیره شده در آرایه است و نه خود آرایه.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و نمایش داده می‌شود.

Student List:
Zoya
Yashna
Olivia
Naomi

نوع اشاره گر

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

در کدهای نوشته شده در کادر زیر، ابتدا متغیری از نوع Int را تعریف کرده‌ایم. سپس در خط بعد، متغیری از نوع اشاره‌گر تعریف کردیم. این متغیر، آدرس متغیر grade را در حافظه ذخیره کرده است.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و نمایش داده می‌شود.

Original Grade: 90
Memory Address: 140734799803648
Updated Grade: 95

البته در سیستم شما ممکن است عدد نمایش داده شده در مقابل عبارت Memory Address فرق کند. در ضمن این کد به دلیل استفاده از عبارت unsafe به احتمال زیاد در کامپیوتر شما اجرا نشده و پیغام خطا می‌دهد. برای برطرف کردن این خطا در ویژوال استودیو باید امکان اجرای کدهای نا‌ایمن را فعال کنید.

استفاده از فیلم های پروژه محور فرادرس برای یادگیری سی شارپ

همین‌طور که می‌دانیم C#‎ در حوزه‌های مختلف کاربرد دارد. سی شارپ، به عنوان زبانی ساده، امن و انعطاف‌پذیر به خوبی در سیستم‌ها و فناوری‌های مختلف ادغام می‌شود. به عنوان نمونه، از این زبان در حوزه‌های مختلفی مانند ساخت نرم‌افزارهای دسکتاپ، وب، موبایل و بازی‌ها استفاده می‌شود. بهترین روش یادگیری هر ابزاری، استفاده از آن بر روی پروژه‌های نزدیک به دنیای واقعی است. به همین دلیل، فرادرس درباره زبان سی شارپ، مجموعه‌ آموزشی را فراهم کرده است که تمام فیلم‌های آن به صورت پروژه محور تولید شده‌اند.

در بالا چند مورد از فیلم‌های آموزش پروژه‌محور سی‌شارپ را معرفی کرده‌ایم. برای دیدن سایر فیلم‌ها بر روی تصویر زیر کلیک کرده و به صفحه اصلی این مجموعه آموزشی هدایت شوید.

مجموعه آموزش پروژه‌محور سی‌شارپ #C – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پروژه‌محور سی‌شارپ هدایت شوید.

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

در زمان توسعه برنامه‌ها، گاهی از اوقات لازم می‌شود که نوع متغیر خاصی را تغییر دهیم. به این عملیات در سی شارپ، «تبدیل نوع» (Type Conversion) گفته می‌شود. عملیات تبدیل نوع به توسعه‌دهندگان کمک می‌کند که داده خاصی را از نوعی به نوع دیگر تغییر دهند. در زبان برنامه نویسی سی شارپ، دو نوع مختلف از Type conversion وجود دارد.

  • «ضمنی» (Implicit)
  • «صریح» (Explicit)

در ادامه این بخش هر دو روش تبدیل نوع را توضیح داده‌ایم.

تبدیل ضمنی و امن

«تبدیل ضمنی» (Implicit Conversion) به صورت خودکار اتفاق می‌افتد. این تبدیل زمانی انجام می‌‌شود که خطر از دست رفتن داده‌ها وجود نداشته باشد. زبان برنامه نویسی سی شارپ این نوع از تبدیل نوع را بین «انواع سازگار» (Compatible Types) انجام می‌دهد.

نکته:

انواع داده سازگار، به داده‌هایی می‌گویند که با یکدیگر کار می‌کنند.

در کادر زیر، مثال ساده‌ای از تبدیل نوع ضمنی را پیاده‌سازی کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی به شکل زیر در کنسول سی شارپ نمایش داده می‌شود.

Student Age (Integer): 18
Converted to Double: 18

تبدیل صریح

در زمان تبدیل کردن انواع داده ناسازگار به یکدیگر باید از تبدیل داده صریح استفاده کنیم. به این کار «کستینگ» (Casting) گفته می‌شود.

در کادر زیر، کدهای مربوط به مثال ساده‌ای درباره تبدیل نوع صریح را نوشته‌ایم.

بعد از اجرای کدهای بالا، خروجی به شکل زیر در کنسول سی شارپ نمایش داده می‌شود.

Original Salary (Double): 50000.75
Rounded Salary (Integer): 50000

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

در این بخش از مطلب، نکات مهمی را درباره استفاده از انواع داده در سی شارپ به صورت خلاصه نوشته‌ایم.

  • نوع داده صحیح را انتخاب کنید: توجه و دقت برای انتخاب نوع داده صحیح در برنامه‌ها به صرفه‌جویی در مصرف حافظه کمک کرده و کارایی برنامه را بیشتر می‌کند.
  • وقتی که نوع متغیر مشخص است از var  استفاده کنید: انجام این کار باعث افزایش خوانایی کدها و تمیزتر شدن آن‌ها می‌شود.
  • از تبدیل‌ نوع غیرضروری پرهیز کنید: تکرار زیاد عملیات تبدیل نوع داده‌ باعث کندتر شدن روند اجرای برنامه می‌شود.
  • برای مقادیر ثابت و بدون تغییر از کلمات کلیدی const  یا readonly  استفاده کنید: این روش از تغییرات تصادفی در نوع مقادیر مهم جلوگیری می‌کند.
  • در انجام محاسبات مالی از نوع decimal  استفاده کنید: استفاده از این نوع، دقت بیشتری در مبادلات مالی فراهم می‌کند.

نکته: استفاده از var  در سی شارپ، به کامپیوتر کمک می‌کند تا نوع متغیر را حدس بزند. برای مثال در کد var number = 5;
 کامپایلر متوجه می‌شود که نوع متغیر number  «عدد صحیح» (Integer) است.

تصویر فانتزی از سایت‌های اینترنتی

رایج‌ترین خطاهای زمان استفاده از انواع داده در سی شارپ

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

  • استفاده از نوع اشتباه: در بعضی از موارد و محاسبات، ممکن است از نوع‌های اشتباه برای مقادیر مورد نظر خود استفاده کنیم. این خطا معمولا در انواع عددی بیشتر پیش می‌آید. برای مثال در کد زیر، قیمت را با نوع Float مقداردهی کرده‌ایم.

باید دقت کنیم که در محاسبات مالی و اقتصادی – هر عملیات ریاضی مربوط به پول – از نوع decimal  استفاده کنیم.

  • مدیریت نکردن مقادیر Null در انواع ارجاعی: نمی‌توان از متغیرهای حاوی «Null» در محاسبات استفاده کرد. این کار باعث برخواستن خطای NullReferenceException  می‌شود.

همیشه قبل از استفاده از متغیرهایی با نوع string  باید مقدار مشخصی را به آن‌ها اختصاص دهیم.

  • نادیده گرفتن سازگاری نوع در عملیات تخصیص: همیشه نوع متغیر و مقدار اختصاص داده شده به آن باید با هم سازگار باشند.

می‌دانیم که age  متغیری با نوع Integer است. برای حل مشکل کد بالا، باید مقدار رشته‌ای را قبل از تخصیص دادن آن به age  به عدد تبدیل کنیم.

جمع‌بندی

زبان برنامه نویسی سی شارپ به دلیل انعطاف‌پذیری و قدرت بالا همراه با کتابخانه‌های مدرن و فراوانی که دارد به یکی از محبوب‌ترین زبان‌های برنامه نویسی تبدیل شده است. یکی از دلایل محبوبیت این زبان وجود انواع داده در سی شارپ است. این زبان هم از شیءگرایی پشتیبانی می‌کند و هم از ساختارهای داده‌ای مانند Struct. توسعه‌دهندگان سی شارپ برای اینکه بتوانند برنامه‌های خود را در بهینه‌ترین حالت ممکن بنویسند و از حافظه کامپیوتر به صحیح‌ترین شکل ممکن استفاده کنند، لازم است با انواع داده در سی شارپ آشنایی داشته باشند.

در این مطلب از مجله فرادرس، دیتا تایپ در #C را معرفی کرده‌ایم. همچنین بهترین روش‌ها و رایج‌ترین اشتباهات مربوط به استفاده از آن‌ها را بررسی کردیم. سی شارپ یکی از زبان‌های برنامه نویسی با نوع‌دهی قوی است. زیرا در این زبان هر نوعی به عنوان بخشی از زبان برنامه‌نویسی از قبل تعریف شده است.

source

توسط expressjs.ir