מדריך NET. – המרות בין טיפוסים (Convert)

‏ • John Bryce

לטיפוסים הבסיסיים ב- Net. קיימת אפשרות המרה נוספת מעבר להמרה מרומזת או מפורשת באמצעות casting. זוהי ההמרה באמצעות מחלקת Convert.

מחלקת Convert הינה מחלקה סטטית. המשמעות היא שכל חברי המחלקה (משתנים, פונקציות וכו') הם בהכרח גם כן סטטיים.

המחלקה מכילה בעיקר פונקציות להמרה. ההמרה אפשרית בין כל טיפוסי הבסיס הבאים:

  • Boolean
  • Char
  • String
  • SByte
  • Byte
  • short) Int16)
  • int) Int32)
  • long) Int64)
  • ushort) Int16)
  • uint) Int32)
  • ulong) UInt64)
  • float) Single)
  • Double
  • Decimal
  • DateTime

לפונקציות ההמרה יכולים להיות 5 תוצאות:

1. אין המרה. במקרה ונעשה ניסיון להמיר מסוג מסוים אל עצמו (למשל, על ידי קריאה לפונקציה (Convert.ToInt32 (Int32 . במקרה זה, הפונקציה פשוט מחזירה מופע של סוג המקור.

2. זריקת החריג InvalidCastException – כאשר המרה מסוימת אינה נתמכת:

  • המרה מ- Char ל- Boolean, Single, Double, Decimal, DateTime ולהיפך.
  • המרה מ- DateTime לכל סוג אחר מלבד String ולהיפך.

3. זריקת החריג FormatException – כאשר מנסים להמיר מחרוזת לכל סוג בסיס אחר אך המחרוזת לא בפורמט הנכון. למשל, המרת מחרוזת שאינה מכילה מספר תקין למספר.

4. זריקת החריג OverflowException – כאשר מנסים לבצע המרה הכרוכה באיבוד נתונים. למשל, המרת משתנה int המכיל את המספר השלם 10000 לסוג byte (מיכוון שהערך המקסימלי של byte הוא 255).

5. המרה מוצלחת. במידה ואף אחד מהמקרים הנ"ל לא התקיים.

 

// Console.ReadLine() returns a string and it
// must be converted.

int newInteger = 0;
try
{
  Console.WriteLine("Enter an integer:");
  newInteger = Convert.ToInt32(Console.ReadLine());
}
catch (ArgumentNullException)
{
  Console.WriteLine("String is null.");
}
catch (FormatException)
{
  Console.WriteLine("String does not consist of an " +
          "optional sign followed by a series of digits.");
}
catch (OverflowException)
{
  Console.WriteLine("Overflow in string to int conversion.");
}

Console.WriteLine("Your integer as a double is {0}",
                  Convert.ToDouble(newInteger));

תגיות: , , ,

ליאור זמיר

כיום אני ה- Webmaster של תוכנית החדשנות של HPE Software.לפני כן, הייתי מנהל תחום Webmaster ומרצה בכיר בג'ון-ברייס (במשך 9 שנים) בקורסים לפיתוח ותיכנות באמצעות Microsoft .NET, מולטימדיה, בניית אתרי אינטרנט ואינטראנט. פיתוח הדרכה ומתן ייעוץ טכנולוגי.

תגובות בפייסבוק