VB.NET WithEvents سلوك الكلمات الرئيسية - تقييد برنامج التحويل البرمجي VB.NET؟

StackOverflow https://stackoverflow.com/questions/840691

سؤال

أنا أعمل على التعرف على C# كما أنا مع VB.NET (اللغة المستخدمة في مكان عملي). أحد أفضل الأشياء في عملية التعلم هو أنه من خلال التعرف على اللغة الأخرى ، تميل إلى معرفة المزيد عن لغتك الأساسية-أسئلة معروفة مثل هذا الظهور:

وفقًا للمصادر التي وجدتها ، والتجربة السابقة ، فإن الحقل في vb.net يُعلن أنه مع قادر على رفع الأحداث. أفهم أن C# ليس لديه ما يعادلها المباشر-لكن سؤالي هو: الحقول بدون لا يمكن لهذه الكلمة الرئيسية في VB.NET رفع الأحداث ، هل هناك طريقة لإنشاء هذا السلوك نفسه في C#؟ هل يحظر برنامج التحويل البرمجي VB هذه الأشياء ببساطة من التعامل مع أحداثها (مع السماح لهم بالفعل برفع الأحداث كالمعتاد)؟

أنا مجرد فضول. ليس لدي أي تطبيق معين للسؤال ...

هل كانت مفيدة؟

المحلول

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

فيما يلي استخدام نموذجي لـ WithEvents:

Class C1
    Public WithEvents ev As New EventThrower()
    Public Sub catcher() Handles ev.event
        Debug.print("Event")
    End Sub
End Class

فيما يلي فئة لا تستخدم WithEvents وهي مكافئة تقريبًا. إنه يوضح لماذا يكون WithEvents مفيدًا جدًا:

Class C2
    Private _ev As EventThrower
    Public Property ev() As EventThrower

        Get
            Return _ev
        End Get

        Set(ByVal value As EventThrower)
            If _ev IsNot Nothing Then
                    removehandler _ev.event, addressof catcher
            End If
            _ev = value
            If _ev IsNot Nothing Then
                    addhandler _ev.event, addressof catcher
            End If
        End Set
    End Property

    Public Sub New()
        ev = New EventThrower()
    End Sub

    Public Sub catcher()
        Debug.print("Event")
    End Sub
End Class
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top