سؤال

هل هناك طريقة لدمج Enums في VB.net؟

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

المحلول

أعتقد أن ما تريده هو التعداد من نوع العلم.

تحتاج إلى إضافة سمة العلامات إلى الجزء العلوي من التعداد، ومن ثم يمكنك دمج التعدادات مع الكلمة الأساسية "Or".

مثله:

<Flags()> _
Enum CombinationEnums As Integer
  HasButton = 1
  TitleBar = 2
  ReadOnly = 4
  ETC = 8
End Enum

ملحوظة: الأرقام الموجودة على اليمين تكون دائمًا أكبر بمرتين (قوى 2) - وهذا ضروري لتتمكن من فصل الأعلام الفردية التي تم تعيينها.

قم بدمج العلامات المطلوبة باستخدام الكلمة الأساسية Or:

Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly

يؤدي هذا إلى تعيين TitleBar وReadonly في التعداد

للتحقق مما تم ضبطه:

If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
  Window.TitleBar = True
End If

نصائح أخرى

يمكنك استخدام FlagsAttribute لتزيين Enum مثل ذلك الذي سيتيح لك دمج Enum:

<FlagsAttribute> _
Public Enumeration SecurityRights
None = 0
Read = 1
Write = 2
Execute = 4

ثم اتصل بهم هكذا (فئة UserPriviltes):

Public Sub New ( _
    options As SecurityRights _
)

New UserPrivileges(SecurityRights.Read OR SecurityRights.Execute)

يتم دمجها بشكل فعال (رياضيات البت) بحيث يكون لدى المستخدم أعلاه كلاً من القراءة والتنفيذ في متغير SecurityRights واحد رائع.

للتحقق لمعرفة ما إذا كان المستخدم لديه امتياز تستخدمه AND (حسابات أكثر دقة للبت) للتحقق من قيمة تعداد المستخدمين باستخدام قيمة التعداد التي تتحقق منها:

//Check to see if user has Write rights
If (user.Privileges And SecurityRights.Write = SecurityRigths.Write) Then
    //Do something clever...
Else
    //Tell user he can't write.
End If

HTH ، تايلر

إذا فهمت سؤالك بشكل صحيح فأنت تريد الجمع بين أنواع التعداد المختلفة.إذن يمكن لمتغير واحد تخزين قيمة من أحد التعدادين المختلفين، أليس كذلك؟إذا كنت تسأل عن تخزين الجمع بين قيمتين مختلفتين من نوع تعداد واحد، يمكنك الاطلاع على شرح Dave Arkell

التعدادات هي مجرد أعداد صحيحة مع بعض السكر النحوي.لذا، إذا تأكدت من عدم وجود تداخل، يمكنك دمجهما عن طريق الإرسال إلى int.

لن يؤدي ذلك إلى إنشاء رمز جميل بالرغم من ذلك.أحاول تجنب استخدام التعدادات في معظم الأوقات.عادةً، إذا سمحت للتعدادات بالتكاثر في شفرتك، فستكون المسألة مجرد مسألة وقت قبل أن تلد بيانات الحالة المتكررة وغيرها من الأنماط المضادة الفوضوية.

مفتاح الجمع Enumالهدف من الأمر s هو التأكد من أن القيمة هي قوة اثنين (1، 2، 4، 8، إلخ.) بحيث يمكنك إجراء عمليات البت عليها (|= &=).أولئك Enumيمكن وضع علامة على s بـ a Flags يصف.ال Anchor تعد الخاصية الموجودة في عناصر تحكم Windows Forms مثالاً على عنصر التحكم هذا.إذا تم وضع علامة عليها كعلامة، فسيسمح لك Visual Studio بالتحقق من القيم بدلاً من تحديد واحدة في القائمة المنسدلة في مصمم الخصائص.

إذا كنت تتناول استخدام علامات التعداد () فهناك مقالة جيدة هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top