C# delegates ការបង្រៀន និងឧទាហរណ៍

C# delegates ការបង្រៀន និងឧទាហរណ៍. C# delegates ការបង្រៀន និងឧទាហរណ៍. C# delegates ការបង្រៀន និងឧទាហរណ៍. C# delegates ការបង្រៀន និងឧទាហរណ៍.

C# delegates ការបង្រៀន និងឧទាហរណ៍.

C# delegates ការបង្រៀន និងឧទាហរណ៍. C# delegates ការបង្រៀន និងឧទាហរណ៍. C# delegates ការបង្រៀន និងឧទាហរណ៍, C# delegates ការបង្រៀន និងឧទាហរណ៍.

នៅទីនេះ, យើង​មាន​ឧទាហរណ៍​សាមញ្ញ​មួយ​ដើម្បី​យល់​ពី​ប្រតិភូ. យើងមានថ្នាក់ Playlist ដែលអនុញ្ញាតឱ្យបន្ថែមបទចម្រៀងទៅក្នុងបញ្ជីចាក់. ថ្នាក់ Playlist ផ្តល់នូវវិធីសាស្រ្តមួយហៅថា ShowPlaylist ដែលបោះពុម្ពបទចម្រៀងទាំងអស់នៅក្នុងបញ្ជីចាក់.

បញ្ជីចាក់ថ្នាក់
{
     // code eliminated for brevity
     
    public void ShowPlaylist()
    {
          ខាងមុខ (ចម្រៀងក្នុងបញ្ជីនេះ។)
          {
               Console.WriteLine("ចំណងជើងបទចម្រៀង: {0}". song.Title);       
          }
    }

}

ដោយប្រើវិធីសាស្ត្រ ShowPlaylist ថ្នាក់បញ្ជីចាក់ នឹងទទួលបានការបោះពុម្ពបញ្ជីចាក់ពេញលេញ.

សូមណែនាំប្រតិភូទៅថ្នាក់ Playlist. ការប្រើប្រាស់ delegate នឹងអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់នៃថ្នាក់ Playlist អនុវត្តតក្កវិជ្ជាសម្រាប់បង្ហាញបញ្ជីចាក់.

នៅទីនេះយើងប្រកាសប្រតិភូនៅក្នុងថ្នាក់ Playlist ដែលមានប៉ារ៉ាម៉ែត្រច្រៀងនៃប្រភេទ Song

បញ្ជីចាក់ថ្នាក់
{
     // កូដត្រូវបានលុបចោលសម្រាប់ភាពខ្លី
     // delegate for showing song
     public delegate bool ProcessPlaylistDelegate(ចម្រៀងចម្រៀង);

...

យើងត្រូវកែតម្រូវ ShowPlayList() វិធីសាស្រ្តប្រើប្រាស់ ProcessPlaylistDelegate. វិធីសាស្ត្រ ShowPlayList យក ProcessPlaylistDelegate ជាប៉ារ៉ាម៉ែត្រ. ឥឡូវនេះយើងអាចដំណើរការបញ្ជីចាក់មុនពេលបោះពុម្ពវា។.

        //show the playlist using another function attached to ProcessPlaylistDelegate
        public void ShowPlaylist(ProcessPlaylistDelegate processPlaylist)
        {
            ខាងមុខ (ចម្រៀងក្នុងបញ្ជីនេះ។)
            {
                ប្រសិនបើ (បញ្ជីដំណើរការ(ចម្រៀង))
                {
                    Console.WriteLine("ចំណងជើងបទចម្រៀង: {0}", song.Title);
                }
            }
        }

ឥឡូវ​នេះ ថ្នាក់​នេះ​អាច​ផ្ទេរសិទ្ធិ​ដំណើរការ​ទៅ​វិធីសាស្ត្រ​ផ្សេង​ទៀត ដរាបណា​ប្រភេទ​ត្រឡប់ និង​ប្រភេទ​ប៉ារ៉ាម៉ែត្រ​ត្រូវ​គ្នា​នឹង​ប្រតិភូ។. ខាងក្រោមថ្នាក់កម្មវិធីកំពុងប្រើថ្នាក់បញ្ជីចាក់. យើងប្រកាស Playlist.ProcessPlaylistDelegate ថ្មី ហើយបន្ទាប់មកយើងកំពុងភ្ជាប់ getMp3Songs ទៅកាន់ប្រតិភូ.

    កម្មវិធីថ្នាក់
    {
        ទុកជាមោឃៈឋិតិវន្ត Main(ខ្សែអក្សរ[] args)
        {
             បញ្ជីចាក់1=បញ្ជីចាក់ថ្មី។();

             //add some songs to the playlist

             //use the delegate to process the list before it is printed on the screen
             playlist1.ShowPlaylist(បញ្ជីចាក់ថ្មី.ProcessPlaylistDelegate(GetMp3Songs));
        }

  }

ខាងក្រោមនេះគឺជានិយមន័យវិធីសាស្រ្ត getMp3Songs. វិធី​នេះ​ត្រឡប់​តែ​ចម្រៀង mp3 ប៉ុណ្ណោះ។. ដូច្នេះ ShowPlaylist នឹងបោះពុម្ពបទចម្រៀង mp3.

        ប៊ូលឋិតិវន្តសាធារណៈ GetMp3Songs(ចម្រៀងចម្រៀង)
        {
            //more logic goes here
            return (song.Format == "mp3");
        }

អំណាចនៃប្រតិភូកើតឡើងនៅពេលដែលយើងអាចដំណើរការបញ្ជីចាក់ខុសគ្នាដោយមិនចាំបាច់ប៉ះថ្នាក់បញ្ជីចាក់. ខាងក្រោមនេះ យើងសូមប្រកាស 2 វិធីសាស្រ្តផ្សេងទៀតនៅក្នុងថ្នាក់កម្មវិធី.

ប៊ូលឋិតិវន្តសាធារណៈ GetCdSongs(ចម្រៀងចម្រៀង)
 {
 //more logic goes here
 return (song.Format == "ស៊ីឌី");
 }

ប៊ូលឋិតិវន្តសាធារណៈ GetAllSongs(ចម្រៀងចម្រៀង)
 {
 //more logic goes here
 return true;
 }

ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង. ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង. ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង. ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង.

            ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង(បញ្ជីចាក់ថ្មី.ProcessPlaylistDelegate(ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង));

            ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង(បញ្ជីចាក់ថ្មី.ProcessPlaylistDelegate(ឥឡូវនេះយើងគ្រាន់តែត្រូវភ្ជាប់វាទៅគណៈប្រតិភូនៅក្នុងវិធីចម្បង));


ទាញ​យក