การ Explicit แปลงโดยการ cast type เช่น byte bTotal = (byte)(bVal1 + bVal2);
การ Parse คือ string -> numeric เช่น double dVal = double.Parse(sVal);
การ Convert คือ type1 -> type2 เช่น long lVal = Convert.ToInt64(dVal);
โค้ด
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void buttonImplicit_Click(object sender, EventArgs e) { //Implicit แปลงตาม user-defined type byte bVal1 = 42; byte bVal2 = 17; int iTotal = bVal1 + bVal2; MessageBox.Show(iTotal.ToString(), "Implicit Conversion"); } private void buttonExplicit_Click(object sender, EventArgs e) { //Explicit แปลงโดยการ cast type byte bVal1 = 42; byte bVal2 = 17; byte bTotal = (byte)(bVal1 + bVal2); //byte bTotal = bVal1 + bVal2; ไม่ได้ เกิด error MessageBox.Show(bTotal.ToString(), "Explicit Conversion"); string strOut = ""; long lVal1 = 20000; int iVal1 = (int)lVal1; //long -> int อันนี้ยัง ok strOut += "iVal1 = " + iVal1.ToString("#,###.##") + " (20,000)\n"; long lVal2 = 40000000000; int iVal2 = (int)lVal2; //long -> int ทำให้ loss data เพราะ int เก็บค่าได้ไม่ถึง 4 หมื่นล้าน strOut += "iVal2 = " + iVal2.ToString("#,###.##") + " (40,000,000,000)\n"; float fVal3 = 12.5f; int iVal3 = (int)fVal3; //float -> int ตัดหลังทศนิยมออกไปเลย strOut += "iVal3 = " + iVal3.ToString("#,###.##") + " (12.5)\n"; MessageBox.Show(strOut, "Explicit Conversion"); } private void buttonParse_Click(object sender, EventArgs e) { //การ Parse คือ string -> numeric string strOut = ""; string sVal = "17.21"; double dVal = double.Parse(sVal); strOut += "dVal = " + dVal.ToString() + "\n"; MessageBox.Show(strOut, "Parse Method"); } private void buttonConvert_Click(object sender, EventArgs e) { //การ Convert คือ type1 -> type2 string strOut = ""; double dVal = 24.557; long lVal = Convert.ToInt64(dVal); //double -> long (long คือ 64-bit signed integer) strOut += "lVal = " + lVal.ToString() + " (24.557)\n"; MessageBox.Show(strOut, "Convert Method"); } } }
Sign up here with your email
ConversionConversion EmoticonEmoticon