ההבדל בין לסלק () ולסיים () ב- C #

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 2 אַפּרִיל 2021
תאריך עדכון: 5 מאי 2024
Anonim
The best openwork. Knitting pattern for a stole. Super easy
וִידֵאוֹ: The best openwork. Knitting pattern for a stole. Super easy

תוֹכֶן


שיטות לפטר () ולסיים () הן השיטות של C # אשר מופעלות כדי לשחרר את המשאבים הבלתי מנוהלים שבידי אובייקט. שיטת ה- dispose () מוגדרת בתוך ממשק המזהה ואילו, השיטה סופית () מוגדרת בתוך אובייקט הכיתה. ההבדל העיקרי בין לסלק () ולסיים () הוא שהשיטה להיפטר() צריך להיעזר במפורש על ידי המשתמש ואילו, השיטה סיים () מופעל על ידי אספן האשפה, רגע לפני שהחפץ נהרס. הבה נבחן כמה הבדלים אחרים ביניהם בעזרת תרשים השוואה המוצג להלן.

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

בסיס להשוואהלהיפטר ()סיים ()
מוגדרהשיטה לזרוק () מוגדרת בממשק IDisposable הממשק.שיטת סיום השיטה () המוגדרת בכיתה java.lang.object.
תחבירהריק מהציבור הרוקן () {
// השלך את הקוד כאן
}
סיים חלל מוגן () {
// קוד סיום כאן
}
מופעל המשתמש משחרר את השיטה ().סיום השיטה () מופעל על ידי אספן האשפה.
מטרההשיטת שיטה () משמשת לשחרור משאבים לא מנוהלים בכל פעם שהם מופעלים.סיום השיטה () משמש לשחרור משאבים לא מנוהלים לפני שהאובייקט נהרס.
יישוםיש ליישם את השיטה לפטר () בכל פעם שיש שיטה קרובה ().יש ליישם את השיטה סופית () למשאבים לא מנוהלים.
מפרט גישהשיטת השלוש () מוצהרת כציבורית.סיום השיטה () מוכרז כפרטי.
פעולה השיטה להיפטר () מהירה יותר וממיטה מיידית אובייקט.סיום השיטה איטי יותר בהשוואה לניתוח
ביצועיםהשיטה מוסרת () מבצעת את הפעולה המיידית ומכאן שלא משפיעה על הביצועים של אתרי אינטרנט. סיום השיטה () בהיותו איטי משפיע על ביצועי האתרים.


הגדרת השלך ()

שיטת dispose () משחררת את המשאבים הבלתי מנוהלים המוחזקים על ידי אובייקט הכיתה. המשאבים הבלתי מנוהלים הם קבצים, חיבורי נתונים וכו '. השיטה לזרוק () מוצהרת בממשק ניתן להבחין בזהב וזה מיושם על ידי הכיתה על ידי יישום ממשק זהה ניתן לשימוש. שיטה זו לא נקראת אוטומטית. המתכנת צריך ליישם אותו ידנית כשאתה יוצר מחלקה מותאמת אישית שתשמש את אחרים. לשיטה התחביר הבא:

dispose void dispose () {// השלך קוד כאן}

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

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

הגדרת סיום ()

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


התחביר של השיטה מסיים ():

סיים חלל מוגן () {// קוד סיום כאן}

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

שיטת ה- finalize () משפיעה על עלות הביצוע מכיוון שהיא לא משחררת את הזיכרון באופן מיידי. ב- C # שיטת הסיום נקראת אוטומטית עם הרסנים.

  1. השיטה לזרוק () מוגדרת בממשק ניתן להזהיר. מצד שני, השיטה סופית () מוגדרת בכיתה חפץ.
  2. יש להפעיל באופן ידני את קוד השיטה () בתוך הקוד על ידי מתכנת, ואילו סיום השיטה מופעל אוטומטית על ידי אספן האשפה לפני שהוא משמיד את האובייקט.
  3. ניתן לפנות לטיפול השולט בכל עת, ואילו סופית השיטה מופעלת על ידי אספן האשפה כאשר הוא מגלה כי לא הוזכר לאובייקט זה זמן רב.
  4. השלכת השיטה () מיושמת בכיתה לאחר יישום הממשק זהה ניתן לשימוש. יש ליישם את השיטה סופית () רק עבור משאבים לא מנוהלים מכיוון שהמשאבים המנוהלים משוחררים אוטומטית על ידי אספן האשפה.
  5. מפרט הגישה של השיטה לפטר () הוא ציבורי כפי שהוא מוגדר במזהה הממשק וניתן ליישם אותו על ידי הכיתה שמיישמת ממשק זה, ולכן הוא צריך להיות ציבורי. מצד שני, השיטה סופית () מפרטת גישה מוגנת כך שהיא לא צריכה להיות נגישה לכל חבר מחוץ לכיתה.
  6. השלכת השיטה () מהירה ומשחררת את האובייקט באופן מיידי, ולכן היא אינה משפיעה על עלות הביצועים. סיום השיטה () איטי יותר ואינו משחרר את המשאבים המוחזקים על ידי האובייקט באופן מיידי.

סיכום:

מומלץ להשתמש בסילוק שיטה () על סיום השיטה () מכיוון שהוא מהיר יותר מסיום. כמו כן, ניתן לקרוא לזה בכל עת, בעת הצורך.