C# – تبدیل نوع (Type Casting)

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

در C#، دو شکل نوع‌تبدیلی وجود دارد:

  1. نوع‌تبدیلی ضمنی (Implicit Casting): تبدیل خودکار یک نوع کوچک‌تر به نوع بزرگ‌تر

    • ترتیب: char -> int -> long -> float -> double
  2. نوع‌تبدیلی صریح (Explicit Casting): تبدیل دستی یک نوع بزرگ‌تر به نوع کوچک‌تر

    • ترتیب: double -> float -> long -> int -> char

تبدیل نوع ضمنی (Implicit Casting)

تبدیل نوع ضمنی به صورت خودکار انجام می‌شود وقتی که یک نوع با اندازه کوچکتر به نوعی با اندازه بزرگ‌تر انتقال می‌یابد:

مثال

int myInt = 9;
double myDouble = myInt;       // نوع‌تبدیلی خودکار: int به double

Console.WriteLine(myInt);      // خروجی: 9
Console.WriteLine(myDouble);   // خروجی: 9

تبدیل نوع صریح (Explicit Casting)

تبدیل نوع صریح باید به صورت دستی انجام شود با قرار دادن نوع مورد نظر در داخل پرانتز در جلوی مقدار:

مثال

double myDouble = 9.78;
int myInt = (int) myDouble;    // نوع‌تبدیلی دستی: double به int

Console.WriteLine(myDouble);   // خروجی: 9.78
Console.WriteLine(myInt);      // خروجی: 9

روش‌های تبدیل نوع (Type Conversion Methods)

زبان C# روش‌های داخلی مختلفی برای تبدیل نوع‌های داده فراهم می‌آورد. همچنین می‌توان انواع داده‌ها را به صورت صریح با استفاده از متدهای داخلی تبدیل کرد، در زیر لیستی از این متدها و توضیحات آن‌ها آمده است:

شماره متد و توضیحات
1 ToBoolean: تبدیل نوع به مقدار بولین، در صورت امکان.
2 ToByte: تبدیل نوع به بایت.
3 ToChar: تبدیل نوع به یک کاراکتر یونیکد، در صورت امکان.
4 ToDateTime: تبدیل نوع (عدد صحیح یا رشته) به ساختارهای تاریخ و زمان.
5 ToDecimal: تبدیل نوع اعشاری یا عدد صحیح به نوع دسی‌مال.
6 ToDouble: تبدیل نوع به نوع دابل.
7 ToInt16: تبدیل نوع به عدد صحیح 16 بیتی.
8 ToInt32: تبدیل نوع به عدد صحیح 32 بیتی.
9 ToInt64: تبدیل نوع به عدد صحیح 64 بیتی.
10 ToSByte: تبدیل نوع به بایت علامت‌دار.
11 ToSingle: تبدیل نوع به عدد اعشاری کوچک (float).
12 ToString: تبدیل نوع به رشته.
13 ToType: تبدیل نوع به نوع مشخص شده.
14 ToUInt16: تبدیل نوع به عدد صحیح بدون علامت 16 بیتی.
15 ToUInt32: تبدیل نوع به عدد صحیح بدون علامت 32 بیتی.
16 ToUInt64: تبدیل نوع به عدد صحیح بزرگ بدون علامت 64 بیتی.

مثال‌های کاربردی

تبدیل به Boolean

int number = 1;
bool isTrue = Convert.ToBoolean(number);
Console.WriteLine(isTrue); // خروجی: True

تبدیل به Byte

int number = 255;
byte byteValue = Convert.ToByte(number);
Console.WriteLine(byteValue); // خروجی: 255

تبدیل به Char

int number = 65;
char character = Convert.ToChar(number);
Console.WriteLine(character); // خروجی: A

تبدیل به DateTime

string dateStr = "2024-08-04";
DateTime date = Convert.ToDateTime(dateStr);
Console.WriteLine(date); // خروجی: 4/08/2024 00:00:00

تبدیل به Decimal

double number = 19.99;
decimal decimalValue = Convert.ToDecimal(number);
Console.WriteLine(decimalValue); // خروجی: 19.99

تبدیل به Double

int number = 42;
double doubleValue = Convert.ToDouble(number);
Console.WriteLine(doubleValue); // خروجی: 42

تبدیل به Int16

long number = 32767;
short shortValue = Convert.ToInt16(number);
Console.WriteLine(shortValue); // خروجی: 32767

تبدیل به Int32

long number = 2147483647;
int intValue = Convert.ToInt32(number);
Console.WriteLine(intValue); // خروجی: 2147483647

تبدیل به Int64

int number = 2147483647;
long longValue = Convert.ToInt64(number);
Console.WriteLine(longValue); // خروجی: 2147483647

تبدیل به SByte

int number = -128;
sbyte sbyteValue = Convert.ToSByte(number);
Console.WriteLine(sbyteValue); // خروجی: -128

تبدیل به Single

int number = 7;
float floatValue = Convert.ToSingle(number);
Console.WriteLine(floatValue); // خروجی: 7

تبدیل به String

int number = 100;
string stringValue = Convert.ToString(number);
Console.WriteLine(stringValue); // خروجی: "100"

تبدیل به Type

این متد بیشتر در مواقعی کاربرد دارد که نیاز به تبدیل به نوع خاصی دارید:

object obj = "Hello";
string str = Convert.ToType(obj, typeof(string)) as string;
Console.WriteLine(str); // خروجی: Hello

تبدیل به UInt16

int number = 65535;
ushort ushortValue = Convert.ToUInt16(number);
Console.WriteLine(ushortValue); // خروجی: 65535

تبدیل به UInt32

long number = 4294967295;
uint uintValue = Convert.ToUInt32(number);
Console.WriteLine(uintValue); // خروجی: 4294967295

تبدیل به UInt64

long number = 18446744073709551615;
ulong ulongValue = Convert.ToUInt64(number);
Console.WriteLine(ulongValue); // خروجی: 18446744073709551615

چرا تبدیل؟

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

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.