C # נציגי הדרכה לדוגמא

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

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

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

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

לפלייליסט בכיתה
{
     // code eliminated for brevity
     
    public void ShowPlaylist()
    {
          לכל אחד (שיר שיר this.list)
          {
               Console.WriteLine("שם השיר: {0}". שם השיר);       
          }
    }

}

באמצעות השיטה לפלייליסט בכיתת ShowPlaylist יקבל את כל הפלייליסט מודפס.

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

כאן אנו מכריזים על נציג בכיתה לפלייליסט שבו יש פרמטר לשיר של מילות סוג

לפלייליסט בכיתה
{
     // קוד בוטל לשם קיצור
     // delegate for showing song
     public delegate bool ProcessPlaylistDelegate(שיר Song);

...

אנחנו צריכים להתאים את ShowPlayList() שיטה להשתמש ProcessPlaylistDelegate. שיטת ShowPlayList לוקחת את ProcessPlaylistDelegate כפרמטר. עכשיו אנחנו יכולים לעבד את לפלייליסט לפני הדפסתו.

        //show the playlist using another function attached to ProcessPlaylistDelegate
        public void ShowPlaylist(ProcessPlaylistDelegate processPlaylist)
        {
            לכל אחד (שיר שיר this.list)
            {
                אם (processPlaylist(שִׁיר))
                {
                    Console.WriteLine("שם השיר: {0}", שם השיר);
                }
            }
        }

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

    תוכנית בכיתה
    {
        סטטי ראשי ומבוטל(חוּט[] ארגומנטים)
        {
             playlist1 לפלייליסט = לפלייליסט חדש();

             //add some songs to the playlist

             //use the delegate to process the list before it is printed on the screen
             playlist1.ShowPlaylist(Playlist.ProcessPlaylistDelegate החדש(GetMp3Songs));
        }

  }

להלן הגדרת שיטת getMp3Songs. שיטה זו רק מחזירה את שירי mp3. לכן ShowPlaylist יהיה ony להדפיס את שירי MP3.

        GetMp3Songs bool סטטית הציבור(שיר Song)
        {
            //more logic goes here
            return (song.Format == "mp3");
        }

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

GetCdSongs bool סטטית הציבור(שיר Song)
 {
 //more logic goes here
 return (song.Format == "CD");
 }

GetAllSongs bool סטטית הציבור(שיר Song)
 {
 //more logic goes here
 return true;
 }

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

            playlist1.ShowPlaylist(Playlist.ProcessPlaylistDelegate החדש(GetCdSongs));

            playlist1.ShowPlaylist(Playlist.ProcessPlaylistDelegate החדש(GetAllSongs));


להורדה

תגיות:

השאר תגובה