כיתות אוסף של X++

הערה

קבוצות עניין של קהילה עברו כעת מ- Yammer Microsoft Viva Engage. כדי להצטרף לקהילת Viva Engage ולהשתתף בדיונים האחרונים, מלא את טופס הגישה לקהילת כספים ופעולות Viva Engage ובחר את הקהילה שאליה ברצונך להצטרף.

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

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

  • Array – מחלקה זו דומה לסוג המערך בשפת X++, אך היא יכולה להכיל ערכים מכל סוג בודד, אפילו אובייקטים ורשומות. ניתן לגשת לאובייקטים בסדר מסוים.
  • List – מחלקה זו מכילה רכיבים שאתה ניגש אליהם ברצף. בניגוד למערך, המחלקה List מספקת פעולת שירות addStart . כמו המחלקה Set , מחלקת הרשימה מספקת את פעולות השירות getEnumeratorו- getIterator . באפשרותך להשתמש באטראטור כדי להוסיף ולמחוק פריטים מתוך אובייקט רשימה.
  • Map – מחלקה זו משייכת ערך מפתח לערך אחר.
  • Set – מחלקה זו תכלול ערכים מכל סוג בודד. הערכים אינם מאוחסנים ברצף שבו אתה מוסיף אותם. במקום זאת, האובייקט Set מאחסן את הערך באופן המטב את הביצועים עבור פעולת השירות in. אובייקט Set מתעלם מכל ניסיון להוסיף ערך שהאובייקט Set כבר מאחסן. בניגוד למחלקת המערך , המחלקה Set מספקת את פעולות השירות inוהסרה .
  • Struct – מחלקה זו יכולה להכיל ערכים של יותר מסוג אחד. הוא משמש לקיבוץ מידע אודות ישות ספציפית.

בנאי עבור כל מחלקת אוסף למעט Struct מקבל פרמטר סוג שהוא רכיב של enum המערכת Types . מופע האוסף יכול לאחסן פריטים מסוג זה בלבד. הרכיב Types::AnyType enum הוא מקרה מיוחד שלא ניתן להשתמש בו כדי לבנות אובייקט אוסף, כגון Set object. לא ניתן לאחסן את ערך ה- Null כרכיב באובייקט Set . בנוסף, Null אינו יכול להיות מפתח באובייקט מפה . באפשרותך לבצע ספירה באמצעות אובייקט אוסף באמצעות ספירה או ספירה. להלן דוגמאות אופייניות המציגות כיצד ניתן להשיג את ה- Iterator.

new MapIterator(myMap)
myMap.getEnumerator()

עבור הגדרת אובייקטים, אם תוסיף או תסיר רכיבים כלשהם לאחר יצירתו של מאתר, מופע ה- Iterator לא יוכל עוד לשמש לקריאה מהאוסף או לשלב בו.

עבור אובייקטי מפה, כגון הגדרת אובייקטים, אם תסיר רכיבים כלשהם, הוא לא יהיה חוקי עוד. עם זאת, אובייקט MapIterator נשאר חוקי גם לאחר קריאה לפעולת השירות Map.insert, בין אם המפתח חדש או אם המפתח כבר קיים ורק הערך מתעדכן ברכיב מפה. קוד הקריאות ל- Map.insert ות תלוי באובייקט ה איטראטור שנותר חוקי עלול להיכשל אם הוא מופעל כ- .NET Framework CIL.

השתמש במחלקות האוסף כדי ליצור כיתות מורכבות יותר. לדוגמה, באפשרותך ליישם בקלות ערימה באמצעות רשימה שבה אתה מוסיף תמיד רכיבים לתחילת הרשימה. לאחר מכן, הרכיב החדש ביותר נמצא בחלק העליון של הערימה.

באפשרותך גם להרחיב את כיתות האוסף. לדוגמה, באפשרותך להרחיב את מחלקת הרשימה כדי ליצור רשימה של רשומות של לקוחות שבהן הפעולות הן מסוג 'סוג בטוח'. במקרה זה, מחלקת האוסף הנגזרת מקבלת רק רשומות של לקוחות.