تبدیل نوع در سی شارپ #C — همراه با مثال های کاربردی

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

این مقاله با بررسی مفاهیم تبدیل نوع خودکار و صریح، مثال‌هایی کاربردی ارائه داده و ابزارهای داخلی برای تبدیل نوع در سی شارپ #C را معرفی می‌کند. هدف، کمک به درک بهتر نحوه مدیریت انواع داده در زبان سی‌شارپ است.

در برنامه‌نویسی، انواع داده‌ نقشی اساسی در مدیریت و ذخیره‌سازی اطلاعات دارند. اگر می‌خواهید درباره‌ی انواع داده در سی شارپ بیشتر مطالعه کنید. کلیک کنید[+]

در زبان برنامه‌نویسی #C، گاهی اوقات نیاز است مقادیر یک نوع داده به نوعی دیگر تبدیل شوند. این فرآیند که به آن تبدیل نوع «Type Conversion» گفته می‌شود، به دو روش انجام می‌گیرد.

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

تبدیل نوع «Type Conversion» زمانی اتفاق می‌افتد که مقدار یک نوع داده به نوع دیگری اختصاص داده شود. اگر نوع داده‌ها با یکدیگر سازگار باشند، سی شارپ به طور خودکار تبدیل نوع «Automatic Type Conversion» را انجام می‌دهد. اما اگر ناسازگار باشند، باید به‌صورت صریح تبدیل شوند که به آن تبدیل نوع صریح «Explicit Type Conversion» گفته می‌شود. به‌عنوان مثال، اختصاص یک مقدار از نوع int به یک متغیر از نوع long.

تصویری از تبدیل نوع داده خودکار و صریح

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

تبدیل نوع ضمنی یا تبدیل نوع خودکار زمانی رخ می‌دهد که:

  • دو نوع داده با یکدیگر سازگار باشند.
  • مقدار یک نوع داده کوچک‌تر به یک نوع داده بزرگ‌تر اختصاص داده شود.

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

تصویری از تبدیل نوع ضمنی در سی شارپ

مثال

// C# program to demonstrate the 
// Implicit Type Conversion 
using System; 
namespace Casting
{ 
  class Pstore
  { 
  // Main Method 
  public static void Main(String []args) 
  { 
   int i = 57; 
   
   // automatic type conversion 
   long l = i; 
   
   // automatic type conversion 
   float f = l; 
   
   // Display Result 
   Console.WriteLine("Int value " +i); 
   Console.WriteLine("Long value " +l); 
   Console.WriteLine("Float value " +f); 
  } 
  } 
} 

خروجی

Int value 57
Long value 57
Float value 57

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

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

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

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

// C# program to illustrate incompatible data 
// type for explicit type conversion 
using System; 
namespace Casting
{ 
  class Pstore
  { 
  // Main Method 
  public static void Main(String []args) 
  { 
   double d = 765.12; 

   // Incompatible Data Type 
   int i = d; 
   
   // Display Result	 
   Console.WriteLine("Value of i is ", +i); 
  } 
  } 
} 

خطا

prog.cs(14,21): error CS0266: Cannot implicitly convert type `double' to `int'.
An explicit conversion exists (are you missing a cast?)

بنابراین، اگر بخواهیم مقدار یک نوع داده بزرگ‌تر را به یک نوع داده کوچک‌تر اختصاص دهیم، از تبدیل نوع صریح استفاده می‌کنیم.

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

مثال

// C# program to demonstrate the 
// Explicit Type Conversion 
using System; 
namespace Casting
{ 
  class Pstore
  { 
  // Main Method 
  public static void Main(String []args) 
  { 
   double d = 765.12; 

   // Explicit Type Casting 
   int i = (int)d; 

   // Display Result 
   Console.WriteLine("Value of i is " +i); 
  } 
   } 
} 

خروجی

Value of i is 765

توضیح: در اینجا به دلیل تبدیل با از دست دادن داده «lossy conversion»، مقدار i به ۷۶۵ تبدیل می‌شود و مقدار ۰.۱۲ از دست می‌رود.

#C متدهای داخلی برای تبدیل نوع ارائه می‌دهد که به شرح زیر است:

متد  توضیحات
ToBoolean یک نوع را به مقدار بولین تبدیل می‌کند
ToChar یک نوع را به مقدار کاراکتری تبدیل می‌کند.
ToByte یک مقدار را به نوع Byte تبدیل می‌کند.
ToDecimal یک مقدار را به عدد اعشاری تبدیل می‌کند.
ToDouble یک نوع را به داده از نوع double تبدیل می‌کند.
ToInt16 یک نوع را به عدد صحیح ۱۶ بیتی تبدیل می‌کند.
ToInt32 یک نوع را به عدد صحیح ۳۲ بیتی تبدیل می‌کند.
ToInt64 یک نوع را به عدد صحیح ۶۴ بیتی تبدیل می‌کند.
ToString یک نوع داده را به رشته (String) تبدیل می‌کند.
ToUInt16 یک نوع را به عدد صحیح بدون علامت ۱۶ بیتی تبدیل می‌کند.
ToUInt32 یک نوع را به عدد صحیح بدون علامت ۳۲ بیتی تبدیل می‌کند.
ToUInt64 یک نوع را به عدد صحیح بدون علامت ۶۴ بیتی تبدیل می‌کند.

مثال

 // C# program to demonstrate the 
// Built- In Type Conversion Methods 
using System; 
namespace Casting
{ 
 class Pstore 
 { 
  // Main Method 
  public static void Main(String []args) 
  { 
   int i = 12; 
   double d = 765.12; 
   float f = 56.123F; 
   // Using Built- In Type Conversion 
   // Methods & Displaying Result 
   Console.WriteLine(Convert.ToString(f)); 
   Console.WriteLine(Convert.ToInt32(d)); 
   Console.WriteLine(Convert.ToUInt32(f)); 
   Console.WriteLine(Convert.ToDouble(i)); 
   Console.WriteLine("ProgramStore"); 
  } 
 } 
} 

خروجی

۵۶.۱۲۳
۷۶۵
۵۶
۱۲
ProgramStore

جمع‌بندی

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

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

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


سوالات متداول


تبدیل نوع خودکار «Implicit Type Conversion» چیست؟

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

آیا ممکن است در تبدیل نوع صریح داده از دست برود؟

بله، در تبدیل نوع صریح (مانند تبدیل یک مقدار double به int) ممکن است بخشی از داده (مانند ارقام اعشاری) از دست برود که به آن تبدیل با از دست دادن داده «Lossy Conversion» گفته می‌شود.

آیا می‌توان انواع داده ناسازگار مانند char و boolean را تبدیل کرد؟

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

چگونه می‌توان از متدهای داخلی C# برای تبدیل نوع استفاده کرد؟

#C متدهای داخلی مانند Convert.ToInt32()، Convert.ToDouble() و ()ToString را ارائه می‌دهد که امکان تبدیل مقادیر را بین انواع مختلف داده فراهم می‌کنند. این متدها ساده و کارآمد هستند و به جلوگیری از خطاهای تبدیل کمک می‌کنند.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 5 از 8 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
geeksforgeeks مجله پی استور

دیدگاه‌ خود را بنویسید

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

1 دیدگاه دربارهٔ «تبدیل نوع در سی شارپ #C — همراه با مثال های کاربردی»



برچسب‌ها:
سی شارپ


پیمایش به بالا