Rumah > Artikel > pembangunan bahagian belakang > Taipkan Hantaran dalam C#
Jenis Casting dalam C# ditakrifkan seolah-olah kami menetapkan mana-mana jenis data kepada jenis data lain kemudian memanggilnya sebagai "Typecasting". Mana-mana bahasa pengaturcaraan nilai jenis data yang lebih rendah secara automatik boleh dimasukkan ke dalam nilai jenis data atas. Dalam keadaan ini tiada kehilangan data, manakala dalam kes nilai jenis data atas ke nilai jenis data yang lebih rendah mungkin terdapat kemungkinan kehilangan data. Jenis data yang lebih rendah kepada jenis data atas boleh secara automatik dilakukan oleh pengkompil C# tetapi jenis data atas untuk penyiapan data yang lebih rendah, kita mesti memerlukan pengetikan yang jelas. Yang dikenali sebagai "Pemutus eksplisit".
Mari kita ambil contoh nilai panjang kepada nilai int ialah penyiapan taip yang eksplisit.
Mari kita pertimbangkan analogi kecil maka anda akan faham dengan sangat jelas, terdapat 2 botol air, satu adalah 1 liter dan satu lagi adalah 2 liter. Kita boleh dengan mudah menuangkan 1 liter air ke dalam 2 liter botol air tanpa melimpah. Begitu juga jika kita cuba menuangkan 2 liter air botol air ke dalam 1 liter maka mungkin ada peluang air melimpah jika botol air 2 liter mengandungi lebih daripada 1 liter air. Jadi, dalam kes ini, botol air 1 liter ialah jenis data yang lebih rendah dan botol air 2 liter ialah jenis data atas. Walaupun ada peluang air melimpah tetap kami nak tuang 2 liter air ke dalam botol air 1 liter yang boleh kami tuang supaya pelanggan mesti terima untuk berbuat demikian. Cara yang sama pembangun mempunyai idea yang jelas walaupun kami cuba menghantar jenis data atas ke jenis data yang lebih rendah mungkin terdapat kehilangan data, jadi dia mesti menerimanya.
Terdapat 2 jenis pemutus dalam C#.
bait->pendek->int->panjang->apung->ganda
Kod:
Bigger_dataType variableName=smaller_dataType_Value;
jenis data yang lebih besar kepada penukaran jenis data yang lebih kecil dikatakan sebagai "Penyecoran taip eksplisit". Ini tidak dilakukan secara automatik oleh pengkompil C#. Mungkin ada kehilangan data. Ini mesti dilakukan oleh pembangun secara eksplisit.
bait->pendek, int, panjang, terapung, berganda
pendek->int, panjang, terapung, dua kali ganda
int->panjang, terapung, dua kali ganda
panjang->apung, berganda
apung->ganda
Kod:
Smaller_dataType variableName=(Smaller_dataType)Bigger_dataType_Value;Nota: Penghantaran boleh digunakan dengan jenis data yang serasi sahaja, bermakna nombor dengan penukaran nombor sahaja tetapi bukan rentetan dengan nombor sebaliknya, dsb. Saya berbuat demikian mungkin terdapat pengecualian yang tidak disokong berlaku.
Di bawah adalah beberapa contoh disebutkan:
Pemutus jenis tersirat
Kod:
//including System package in C# using System; //Creating class public class ImplicitTypeCasting { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 200; // Implicit int to long casting long longType = intType; // Implicit long to float casting float floatType = longType; // Printing output of implicit conversion variables Console.WriteLine("INT value after Implicit conversion: " +intType); Console.WriteLine("LONG value after Implicit conversion:" +longType); Console.WriteLine("FLOAT value after Implicit conversion: " +floatType); } }
Output:
Mencuba jenis yang lebih besar kepada jenis yang lebih rendah Penghantaran jenis tersirat
Kod:
//including System package in C# using System; //Creating class public class ImplicitCastingBiggerToSmaller { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 200; // Trying to convert int to byte Implicitly but there is compile time error byte byteType = intType; // Trying to convert int to short Implicitly but there is compile time error short shortType = intType; // Printing output of implicit conversion variables Console.WriteLine("INT value after Implicit conversion: " +intType); Console.WriteLine("BYTE value after Implicit conversion:" +byteType); Console.WriteLine("SHORT value after Implicit conversion: " +shortType); } }
Output:
Penghantaran jenis eksplisit
Kod:
//including System package in C# using System; //Creating class public class ExplicitCastingBiggerToSmaller { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 9999999; int intType1=120; // Trying to convert int to byte explicitly byte byteType = (byte)intType; byte byteType1 = (byte)intType1; // Trying to convert int to short explicitly short shortType = (short)intType; short shortType1 = (short)intType1; // Printing output of explicit conversion variables //Given int range is not in byte and short range so there must be loss of data result into incorrect output Console.WriteLine("BYTE value after Explicit conversion: " +byteType); Console.WriteLine("SHORT value after Explicit conversion: " +shortType); Console.WriteLine("\n"); // Printing output of explicit conversion variables //Given int range is in byte and short range so there no data loss Console.WriteLine("BYTE value after Explicit conversion: " +byteType1); Console.WriteLine("SHORT value after Explicit conversion: " +shortType1); } }<strong> </strong>
Output:
Pemutus jenis eksplisit dengan kaedah yang telah ditetapkan
Kod:
//including System package in C# using System; //Creating class public class ExplicitCastingBiggerToSmaller { // main method for application to run public static void Main(String []args) { //variable declaration and initialization int intType = 9999999; double doubleType=122.23; float floatType=222.222f; // Printing output of explicit convertion variables //By using C# predefined method for type casting Console.WriteLine("INT to STRING type value with predefined method convertion: "+Convert.ToString(intType)); Console.WriteLine("DOUBLE to INT type value with predefined method convertion: "+Convert.ToInt32(doubleType)); Console.WriteLine("FLOAT to INT type value with predefined method convertion: "+Convert.ToUInt32(floatType)); } }
Output:
C# terdapat 2 jenis tuangan jenis ada, 1st satu tuangan jenis tersirat dan yang kedua tuangan taip eksplisit. Penghantaran jenis tersirat secara automatik dilakukan oleh pengkompil tetapi pembangun penghantaran jenis eksplisit mesti dilakukan kerana dalam kes ini mungkin terdapat peluang untuk kehilangan data.
Atas ialah kandungan terperinci Taipkan Hantaran dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!