VB.NET WithEvents سلوك الكلمات الرئيسية - تقييد برنامج التحويل البرمجي VB.NET؟
-
20-08-2019 - |
سؤال
أنا أعمل على التعرف على 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