כיצד לעבוד עם נציגי Action, Func ו- Predicate ב- C #

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

מהם נציגי Func ו- Action? כיצד ניתן להשתמש בהם?

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

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

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

תכנות נציגי פעולה ב- C #

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

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

פעולה

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

ריק סטטי ראשי (מחרוזת [] טענות)

        {

            פעולה פעולה = פעולה חדשה (תצוגה);

            פעולה ("שלום !!!");

            Console.Read ();

        }

תצוגה חלילה סטטית (הודעת מחרוזת)

        {

            Console.WriteLine (הודעה);

        }

תכנות נציגי Func ב- C #

בואו עכשיו להבין כיצד נוכל לעבוד עם נציגי Func ב- C #. הנה התחביר של נציג Func.

פונקציה

קטע הקוד הבא ממחיש כיצד ניתן להשתמש בנציג Func ב- C #. הוא מדפיס את שווי הרה (מחושב כ 40% משכר הבסיס). השכר הבסיסי מועבר אליו כטיעון.

ריק סטטי ראשי (מחרוזת [] טענות)

        {

            Func func = Func חדש (CalculateHra);

            Console.WriteLine (func (50000));

            Console.Read ();

        }

        כפול סטטי CalculateHra (int בסיסי)

        {

            החזר (כפול) (בסיסי * .4);

        }

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

תכנות צירים לנבא ב- C #

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

לְבַסֵס

שים לב ש- Predicate שווה בעצם ל- Func.

שקול את מחלקת הישות הבאה בשם לקוח.

לקוח בכיתה

    {

        ID מזהה ציבורי {get; מַעֲרֶכֶת; }

        מחרוזת ציבורית FirstName {get; מַעֲרֶכֶת; }

        מחרוזת ציבורית LastName {get; מַעֲרֶכֶת; }

        public string Address { get; set; }

        public string City { get; set; }

        public string State { get; set; }

        public string Country { get; set; }

    }

Next, create a list of customers and store objects of type Customer into it.

 List custList = new List();

            custList.Add(new Customer { Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", Address = "Begumpet", Country = "India" });

            custList.Add(new Customer { Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", Address = "Lake Avenue", Country = "US" });

The following is the complete code listing that shows how we can use a Predicate delegate to search data.

static void Main(string[] args)

        {

            List custList = new List();

            custList.Add(new Customer { Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", Address = "Begumpet", Country = "India" });

            custList.Add(new Customer { Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", Address = "Lake Avenue", Country = "US" });

            Predicate hydCustomers = x => x.Id == 1;

            Customer customer = custList.Find(hydCustomers);

            Console.WriteLine(customer.FirstName);

            Console.Read();

        }

When the above code snippet is executed, the name “Joydip” will be displayed in the console window.

כיצד לעשות יותר ב- C #:

  • מתי להשתמש בכיתה מופשטת לעומת ממשק ב- C #
  • כיצד לעבוד עם AutoMapper ב- C #
  • כיצד להשתמש בביטויי למבדה ב- C #
  • כיצד לעבוד עם נציגי Action, Func ו- Predicate ב- C #
  • כיצד לעבוד עם נציגים ב- C #
  • כיצד ליישם לוגר פשוט ב- C #
  • כיצד לעבוד עם תכונות ב- C #
  • כיצד לעבוד עם log4net ב- C #
  • כיצד ליישם את דפוס עיצוב המאגר ב- C #
  • כיצד לעבוד עם השתקפות ב- C #
  • כיצד לעבוד עם מערכת קבצים ב- C #
  • כיצד לבצע אתחול עצל ב- C #
  • כיצד לעבוד עם MSMQ ב- C #
  • כיצד לעבוד עם שיטות הרחבה ב- C #
  • איך לנו ביטויים למבדה ב- C #
  • מתי להשתמש במילת המפתח ההפכפכה ב- C #
  • כיצד להשתמש במילת המפתח תשואה ב- C #
  • כיצד ליישם פולימורפיזם ב- C #
  • כיצד לבנות מתזמן משימות משלך ב- C #
  • כיצד לעבוד עם RabbitMQ ב- C #
  • איך לעבוד עם ציצית ב C #
  • חקר שיטות וירטואליות ומופשטות ב- C #