דיברנו כבר בעבר על האופרטורים ששמם as וis. (טיפ מספר 12)
אמרתי שכתיבה של as היא שקולה לבדיקה של הType המתאים באמצעות is ואז קריאה להסבה. עם זאת, אם נסתכל על הקוד IL המקומפל של שתי הקריאות:
|
|
מתקמפל ל
|
|
ואילו השורה הבאה:
|
|
מתקמפלת ל
|
|
מה שאנחנו רואים כאן זה משהו מעניין: הפעולה isinst היא פעולת IL הבודקת אם המשתנה שלנו הוא מסוג מסוים.
במקרה ראשון, אנחנו רואים שמתבצעת הפעולה, ולא עושים כלום עם הערך, אבל במידה והוא לא null, מבצעים הסבה לטיפוס של Shape.
במקרה שני, אנחנו רואים שפשוט מוכנס ערך המשתנה למשתנה השני!
הסיכום הוא שלמרות שמדובר בפעולות שקולות, הרי ששימוש באופרטור as הוא חסכוני יותר. זוהי כמובן מיקרו-אופטימיזציה שכנראה לא תהיה צוואר בקבוק בתכנית, אבל מעניין לדעת שפעולה זו מהירה יותר מהפעולה השקולה לה.
המשך יום מוסב לטובה!