כיצד להשתמש בסוגים אנונימיים ב- C #

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

כדי לעבוד עם דוגמאות הקוד המופיעות במאמר זה, עליך להתקין במערכת Visual Studio 2019 שלך. אם עדיין אין לך עותק, תוכל להוריד את Visual Studio 2019 כאן. 

צור פרויקט יישום קונסולה ב- Visual Studio

ראשית, בואו ניצור פרויקט יישומי קונסולת .NET Core ב- Visual Studio. בהנחה ש- Visual Studio 2019 מותקן במערכת שלך, בצע את הצעדים המתוארים להלן כדי ליצור פרויקט יישום חדש של מסוף ה- NET Core ב- Visual Studio.

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

פעולה זו תיצור פרויקט יישום קונסולת .NET Core חדש ב- Visual Studio 2019. נשתמש בפרויקט זה בחלקים הבאים במאמר זה כדי להמחיש כיצד נוכל לעבוד עם סוגים אנונימיים ב- C #.

להבין סוגים אנונימיים ב- C #

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

אתה יכול לגשת לסוג אנונימי או לתכונות שלו בתוך השיטה בה הוגדר הסוג האנונימי. במילים אחרות, הנגישות של סוג אנונימי מוגבלת לטווח שבו הוגדרה.

השתמש בסוג אנונימי ב- C #

בואו נחפור לקוד כלשהו. שקול את הסוג האנונימי הבא.

var author = חדש

{

  FirstName = "ג'וידיפ",

  LastName = "Kanjilal",

  כתובת = "היידראבאד, הודו"

};

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

אתה יכול להשתמש בקטע הקוד הבא כדי לגשת לשלושת המאפיינים מהסוג האנונימי שלעיל.

Console.WriteLine ("שם: {0} {1}", author.FirstName, author.LastName);

Console.WriteLine ("כתובת: {0}", מחבר. כתובת);

השתמש בסוג אנונימי מקונן ב- C #

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

var author = חדש

{

  FirstName = "ג'וידיפ",

  LastName = "Kanjilal",

  כתובת = חדש {City = "Hyderabad", מדינה = "INDIA"}

};

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

Console.WriteLine ("שם: {0} {1}", author.FirstName, author.LastName);

Console.WriteLine ("כתובת: {0}", author.Address.City);

התוכנית השלמה מובאת להלן לעיונך.

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

{

  var author = חדש

  {

     FirstName = "ג'וידיפ",

     LastName = "Kanjilal",

     כתובת = חדש {City = "Hyderabad", מדינה = "INDIA"}

  };

  Console.WriteLine ("שם: {0} {1}", author.FirstName, author.LastName);

  Console.WriteLine ("כתובת: {0}", author.Address.City);

  Console.Read ();

}

השתמש בסוגים אנונימיים עם LINQ 

סעיף Select ב- LINQ יוצר ומחזיר כתוצאה סוג אנונימי. קטע הקוד הבא ממחיש זאת.

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

מחלקה ציבורית מחבר

{

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

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

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

}

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

מחברי איליסט =

רשימה חדשה()

{

  מחבר חדש () {Id = 1, FirstName = "John", LastName = "Willey"},

  מחבר חדש () {Id = 2, FirstName = "Steve", LastName = "Smith"},

  מחבר חדש () {Id = 3, FirstName = "Bill", LastName = "Ruffner"},

  מחבר חדש () {Id = 4, FirstName = "Joydip", LastName = "Kanjilal"}

};

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

var result = מ- a מחברים בחר חדש

{

   Id = a.Id,

   שם = a.FirstName + "\ t" + a.LastName

};

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

foreach (נתוני var בתוצאה)

      Console.WriteLine (data.Name);

התוכנית השלמה מובאת להלן לעיונך.

מחלקה ציבורית מחבר

    {

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

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

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

    }

    תכנית כיתתית

    {

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

        {

            מחברי איליסטים = רשימה חדשה () {

                        מחבר חדש () {Id = 1, FirstName = "John",

                                      LastName = "Willey"},

                        מחבר חדש () {Id = 2, FirstName = "Steve",

                                      LastName = "Smith"},

                        מחבר חדש () {Id = 3, FirstName = "Bill",

                                      LastName = "Ruffner"},

                        מחבר חדש () {Id = 4, FirstName = "Joydip",

                                      LastName = "Kanjilal"}

                };

            תוצאת var = מ- a במחברים

                         בחר חדש

                         {

                             Id = a.Id,

                             שם = a.FirstName + "\ t" + a.LastName

                         };

            foreach (נתוני var בתוצאה)

                Console.WriteLine (data.Name);

            Console.Read ();

        }

    }

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

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

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

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