تعريف النوع المجهول

استجابة إلى تعريف مثيل لنوع مجهول المترجم البرمجي يقوم بإنشاء تعريف فئة جديد الذي يحتوي على الخصائص المحددة لنوع.

تعليمات برمجية منشأة عن طريق برنامج التحويل البرمجي

للتعريف التالي product، ينشئ المحول البرمجي تعريف فئة جديد يحتوي على الخصائص Name، Price، و OnHand.

' Variable product is an instance of an anonymous type.
Dim product = New With {Key .Name = "paperclips", Key .Price = 1.29, .OnHand = 24}

تعريف الفئة يحتوي على ملفات تعريف خاصية مماثلة للتالي. لاحظ أنه ليس هناك أية Set أسلوب لخصائص المفتاح . قيم خصائص المفتاح للقراءة فقط.

Public Class $Anonymous1
    Private _name As String
    Private _price As Double
    Private _onHand As Integer
     Public Property Name() As String
        Get
            Return _name
        End Get
    End Property

    Public Property Price() As Double
        Get
            Return _price
        End Get
    End Property

    Public Property OnHand() As Integer
        Get
            Return _onHand
        End Get
        Set(ByVal Value As Integer)
            _onHand = Value
        End Set
    End Property

End Class

بالإضافة إلى ذلك،ملفات تعريف النوع المجهول تحتوي على الدالة الإنشائية الافتراضية. المُنشئات التي تتطلب معلمات غير مسموح بها .

إذا احتوى إعلان النوع المجهول على الأقل على خاصية مفتاح واحدة ، يتجاوز تعريف النوع ثلاثة أعضاء موروثة من Object: Equals ، GetHashCode و ToString إذا لم يتم تعريف خصائص المفتاح،فقط ToString يتم إبطال. التجاوزات توفر الوظائف التالية:

  • Equals ترجع True إذا كانت مثيلين من النوع المجهول هما نفس المثيل أو إذا اتفقا بالشروط التالية:

    • لديهما نفس عدد خصائص.

    • الخصائص يتم تعريفها بنفس الترتيب باستخدام نفس الأسماء وأنواع المستنتجة نفسها. مقارنات الاسم ليست حساسة لحالة الأحرف.

    • على الأقل أحد الخصائص هو خاصية المفتاح Key و يتم تطبيق الكلمة الأساسية إلى نفس الخصائص.

    • يتم إرجاع المقارنة بين كل ننشأ ازدواجي المطابقة لخصائص المفتاحTrue.

    على سبيل المثال، في الأمثلة التالية Equals إرجاع True فقط من أجل employee01 و employee08. يعين التعليق قبل كل خط السبب لماذا لا يتطابق المثيل الجديد employee01.

    Dim employee01 = New With {Key .Name = "Bob", Key .Category = 3, .InOffice = False}
    
    ' employee02 has no InOffice property.
    Dim employee02 = New With {Key .Name = "Bob", Key .Category = 3}
    
    ' The first property has a different name.
    Dim employee03 = New With {Key .FirstName = "Bob", Key .Category = 3, .InOffice = False}
    
    ' Property Category has a different value.
    Dim employee04 = New With {Key .Name = "Bob", Key .Category = 2, .InOffice = False}
    
    ' Property Category has a different type.
    Dim employee05 = New With {Key .Name = "Bob", Key .Category = 3.2, .InOffice = False}
    
    ' The properties are declared in a different order.
    Dim employee06 = New With {Key .Category = 3, Key .Name = "Bob", .InOffice = False}
    
    ' Property Category is not a key property.
    Dim employee07 = New With {Key .Name = "Bob", .Category = 3, .InOffice = False}
    
    ' employee01 and employee 08 meet all conditions for equality. Note 
    ' that the values of the non-key field need not be the same.
    Dim employee08 = New With {Key .Name = "Bob", Key .Category = 2 + 1, .InOffice = True}
    
    ' Equals returns True only for employee01 and employee08.
    Console.WriteLine(employee01.Equals(employee08))
    
  • GetHashcode يوفر خوارزمية GetHashCode الفريد و بشكل مناسب. تستخدم الخوارزمية فقط خصائص المفتاح لحساب التعليمات البرمجية التجزئية.

  • ToString تقوم بإرجاع سلسلة من قيم الخصائص المترابطة كما هو موضح في المثال التالي. كلا خصائص المفتاح والالمفتاح يتم ضمها.

    Console.WriteLine(employee01.ToString())
    Console.WriteLine(employee01)
    ' The preceding statements both display the following:
    ' { Name = Bob, Category = 3, InOffice = False }
    

خصائص المسمية بوضوح للنوع المجهول لا تتعارض مع هذه الأساليب التي تم إنشاؤها. ولذلك لا يمكنك استخدام .Equals, .GetHashCode، أو .ToString لتَسْمِية خاصية.

ملفات تعريف النوع المجهول تتضمن على خاصية مفتاح واحدة على الأقل و أيضاً تنفذ System.IEquatable<T> واجهة حيث T هو نوع من النوع المجهول.

ملاحظة

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

راجع أيضًا:

المهام

كيفية القيام بما يلي: تعريف مثيل من النوع المجهول

كيفية القيام بما يلي: أسماء الخصائص الاستدلال و الأنواع في تعريفات نوع مجهول

المبادئ

أنواع مجهولة

مقارنة أنواع مجهولة و مسماة