לדלג לתוכן

תרגול תצוגות ובעלות על buffer

כתבו ref struct בשם Cursor שמחזיק ReadOnlySpan ומיקום. הוסיפו TryReadUInt32 ו־TryTake שמתקדמות רק בהצלחה. בדקו קלט חסר בכל גבול והוכיחו שהמיקום נשאר ללא שינוי אחרי כשל.

שנו את ניסוי ה־pool כך שיחשב תוצאה עבור שני קבצים ברצף, כאשר הקובץ השני קצר מאוד. הזריקו exception באמצע העיבוד וודאו באמצעות pool מזויף או מונה השאלות שההחזרה מתבצעת פעם אחת. אל תבדקו רק שה־GC לא אסף את המערך.

הסבירו מדוע שמירת Memory של buffer מושאל בתוך אובייקט תוצאה ואז החזרת המערך ל־pool היא תקלה. הציעו שני חוזים תקינים: העתקת התוצאה, או העברת בעלות על lease שנשאר חי עד Dispose.