بسم الله الرحمن الرحيم
النوع المجهول (Anonymous type): توفر لغة سي شارب C#.NET كتابة متغيرات دون التصريح بنوع المتغير ،بحيث في هذه الحالة سيتم تحديد نوع المتغير عن طريق القيمة المسندة اليه وقت الترجمة compile time.
وهذا النوع من المتغيرات يتم كتابتها باستخدام الكلمة المفتاحية var بالشكل التالي:
PHP كود :
var number = 10;
في هذه الحالة ستكون مجبرا باعطاء قيمة للمتغير number في نفس سطر التعريف ،بحيث لا يسمح بتعريف المتغير ومن ثم اعطاءه قيمة معينة في سطر اخر كما في المثال التالي:
PHP كود :
var number; // error: variable must be initialized
number = 10;
هذا النوع مفيد جدا عند استخدامك لتقنية LINQ بحيث في بعض الاحيان ستقوم بجلب قيم معينة من المصدر باستخدام تقنية LINQ وستكون مجبرا باستخدام النوع المجهول كما في المثال التالي:
المثال ادناه عبارة عن مقارنة بين استخدام تقينة LINQ و for-loop لايجاد عدد الاعداد الفردية والزوجية.
الذي ستلاحظه في المثال انه هنالك متغيرين باسم (evens, odds) ،وستلاحظ كتابتها دون التصريح عن نوعهما وعند التأشير الى المتغير result ستلاحظ عبارة: Anonymous Types: new {int evens, int odds}.
المثال:
PHP كود :
var numbers = new int[] { 1, 5, 89, 99, 3, 5, 7, 7, 334, 66, 88 };
// evens and odds using for-loop
//int evens = 0, odds = 0;
//foreach (var number in numbers)
//{
// if (number % 2 == 0)
// {
// evens++;
// }
// else
// {
// odds++;
// }
//}
//Console.WriteLine($"Evens: {evens} \nOdds: {odds}");
// evens and odds in LINQ
var result = numbers.Select(item =>
new
{
evens = numbers.Count(number => number % 2 == 0),
odds = numbers.Count(number => number % 2 != 0)
}).FirstOrDefault();
Console.WriteLine($"Evens: {result.evens} \nOdds: {result.odds}");
Console.ReadLine();
تحياتي لكم
سجاد محمد