English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي C#

دليل متقدم C#

C# موجه بالأشياء (OOP)

نوع غير معروف لـ C#

 في C#، الأنواع المجهولة هي أنواع (فئات) لا تحتوي على أي اسم، والاسم يمكن أن يحتوي فقط على خصائص قابلة للقراءة العامة. لا يمكن أن تحتوي على أعضاء أخرى مثل الحقول، الطرق، الأحداث، إلخ.

استخدام عمودية التبويب الجديدة لإنشاء أنواع مجهولة. يتم استخدام متغير النوع المجهول var لتخزين مرجع الأنواع المجهولة.

يوضح المثال أدناه كيفية إنشاء متغير مجهول اسمه student يحتوي على ثلاث خصائص هي Id وFirstName وLastName.

var student = new { Id = 1, FirstName = "James", LastName = "Bond" };

خصائص أنواع مجهولة هي قابلة للقراءة فقط ولا يمكن استخدام null أو الدوال المجهولة أو أنواع الإشارات للتحديد. يمكن استخدام طريقة النقطة (.) لاستدعاء هذه الخصائص، مثل خصائص العنصر. ولكن، لا يمكنك تغيير قيمة الخصائص لأنها قابلة للقراءة فقط.

var student = new { Id = 1, FirstName = "James", LastName = "Bond" };
Console.WriteLine(student.Id); //الإخراج1
Console.WriteLine(student.FirstName); //الإخراج: James
Console.WriteLine(student.LastName); //الإخراج: Bond
student.Id = 2;//خطأ: لا يمكن تغيير القيمة
student.FirstName = "Steve";//خطأ: لا يمكن تغيير القيمة

يمكن أن تشمل خصائص أنواع مجهولة أنواع مجهولة أخرى.

var student = new { 
                    Id = 1, 
                    FirstName = "James", 
                    LastName = "Bond",
                    Address = new { Id = 1, City = "London", Country = "UK" }
                };

يمكنك أيضًا إنشاء مصفوفة من أنواع مجهولة.

var students = new[] {
            new { Id = 1, FirstName = "James", LastName = "Bond" },
            new { Id = 2, FirstName = "Steve", LastName = "Jobs" },
            new { Id = 3, FirstName = "Bill", LastName = "Gates" }
    };

أنواع مجهولة تكون محلية دائمًا للأسلوب الذي تم تعريفها فيها. لا يمكن إرجاعها من الأسلوب. ومع ذلك، يمكن استخدام أنواع مجهولة كمعامل نوع لأسلوب، ولكن ليس من المستحسن القيام بذلك. إذا كنت بحاجة إلى إرسالها إلى أسلوب آخر، استخدم struct أو class بدلاً من نوع مجهول.

عادةً، يتم إنشاء أنواع مجهولة باستخدام جملة Select من استعلام LINQ لاسترداد مجموعة من خصائص كل عنصر في المجموعة.

class Program
{
    static void Main(string[] args)
    {
        IList<Student> studentList = new List<Student>() { 
            new Student() { StudentID = 1, StudentName = "John", age = 18 }
            new Student() { StudentID = 2, StudentName = "Steve", age = 21 },
            new Student() { StudentID = 3, StudentName = "Bill", age = 18 },
            new Student() { StudentID = 4, StudentName = "Ram", age = 20 },
            new Student() { StudentID = 5, StudentName = "Ron", age = 21 } 
        };
        var students = from s in studentList
                       select new { Id = s.StudentID, Name = s.StudentName };
        foreach(var stud in students)
            Console.WriteLine(stud.Id + "-" + stud.Name);
    {}
{}
public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int age { get; set; }
{}
الإخراج:
1-John
2-Steve
3-Bill
4-Ram
5-Ron

في المثال السابق، اختار جملة select في استعلام LINQ خاصية StudentID وStudentName وأعاد تسميتها على التوالي إلى Id وName. لذا، يعتبر مفيدًا في توفير الذاكرة وتجنب الكود غير الضروري. تحتوي مجموعة النتائج على خاصية StudentID وStudentName فقط، كما يظهر في رؤية التتبع التالية.

يدعم Visual Studio Intellisense للأنواع الغير معروفة كما يلي.

دعم Intellisense للأنواع الغير معروفة في Visual Studio

في الداخل، جميع أنواع الغير معروفة تستمر مباشرة من فئة System.Object. سيقوم الماكينيست بتوليد فئة تحتوي على أسماء مولدة تلقائيًا ويطبق النوع المناسب لكل خاصية بناءً على تعبير القيمة. على الرغم من أن كودك لا يمكنه الوصول إليها. يمكنك الرجوع إلى استخدام أسلوب GetType() لرؤية الاسم.

مثال: الاسم الداخلي للنوع الغير معروف
static void Main(string[] args)
{    
var student = new { Id = 1, FirstName = "James", LastName = "Bond" };    
    Console.WriteLine(student.GetType().ToString());
{}