תרגול חוזי שינוי¶
כתבו readonly struct בשם ByteRange שמחזיק Start ו־Length כערכי long, ודוחה טווח שלילי או סוף שגולש. הוסיפו TryIntersect שמחזיר out ByteRange ומאפשר טווח ריק. הגדירו במפורש מה מחזירים כששני טווחים זרים.
הדגימו defensive copy באמצעות struct שמשנה מונה פנימי בשיטה, והסבירו מדוע שדה readonly של אותו struct בתוך class יגרום לתופעה דומה. שנו את ה־API כך שהקריאה אינה משנה מצב והשינוי מופיע בפונקציה נפרדת שמקבלת ref.
בדקו טווחים נוגעים, טווח מוכָל, טווחים זרים וערך שקרוב ל־long.MaxValue. אל תחשבו סוף באמצעות חיבור לא מוגן.