C# – تبدیل نوع (Type Casting)
تبدیل نوع زمانی اتفاق میافتد که یک مقدار از یک نوع داده به نوع دیگری اختصاص داده میشود.
در C#، دو شکل نوعتبدیلی وجود دارد:
-
نوعتبدیلی ضمنی (Implicit Casting): تبدیل خودکار یک نوع کوچکتر به نوع بزرگتر
- ترتیب:
char -> int -> long -> float -> double
- ترتیب:
-
نوعتبدیلی صریح (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
چرا تبدیل؟
بسیاری اوقات نیازی به تبدیل نوع نیست. اما گاهی اوقات مجبور به انجام آن هستید. به فصل بعدی که درباره کار با ورودی کاربر است نگاه کنید تا نمونهای از این موضوع را ببینید.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام