ومع ذلك ، فإن ما يطرحه السؤال هو ملاحظة مثيرة للاهتمام أن التعداد يمكن أن تسمح على ما يبدو بقيم قيم متعددة لنفس الثابت. تتخلى عن تفاصيل تنفيذ وقت تشغيل اللغة المشتركة (CLR) ، يصبح من الواضح أن التعدادات تشبه بشكل أساسي الهياكل. خلف الكواليس ، مستمدة من الفئة الأساسية. { الأحمر = 1 ، الأزرق = 1 ، الأخضر = 1 }
يفسر CLR داخليًا هذا الإعلان على النحو التالي: { public const int red = 1 ؛ public const int Blue = 1 ؛ public const int green = 1 ؛ }
بينما يحظر C# إعلان الفئة الأساسية الصريحة للهياكل ، ومع ذلك ، فإن CLR يولد هذا التمثيل للعوالم. ومع ذلك ، يمكن أن تؤدي تعيين القيمة غير الموسيقية هذه إلى سلوك غير متوقع أثناء التحويل إلى نوع التعداد. color Color2 = (color) enum.parse (typeof (color) ، "1") ؛
سيتم تعيين كلا color1 و color2 على القيمة الحمراء لأن تعيين القيمة الأولى تعسفي. من الناحية الفنية ، لا يتم تعيين لون Color1 أو Color2 باللون الأحمر ؛ بدلاً من ذلك ، يحتفظون بالقيمة 1. ولكن عند عرضه ، فإن اللون الأحمر هو ما سترى. bool b = color.red == color.green ؛
public enum Color { Red = 1, Blue = 1, Green = 1 }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3