سؤال

إذا int مرادف Int32 لماذا

enum MyEnum : Int32
{
    Value = 1
}

...وليس تجميع?حيث

enum MyEnum : int
{
    Value = 1
}

، على الرغم من تحوم المؤشر فوق الباحث كلمة عرض البنية النظام.Int32?

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

المحلول

الأساسية نوع هو في الواقع نفسه ، ولكن المترجم يعتمد على نوع الدقيق المستعار.هذا هو خطأ في التجميع على أساس تحليل.أخذت نظرة على C# النحوي المواصفات الأساسية أنواع محددة هناك الرموز على أساس الاسم المستعار (مثلا ، 'int', 'الوحدة'....... الخ).محلل يتوقع سلاسل معينة من جزءا لا يتجزأ من أنواع قواعد القاعدة.

الخطأ هو خطأ في توزيع على الرغم من كل enum Enum : int يعني نفس enum Enum : Int32.

أنا لا أعرف السبب في إجبار هذا الحد إلى تحليل الخطوة ، ولكن يمكن أن أحاول التخمين:منذ Int32 ليست كلمة قد تشير إلى شيء آخر الفعلية الباحث البنية.إذا محلل له أن تعرف نوع من أجل بناء مختلفة AST لكل نوع قاعدة ثم فإنه لا يمكن أن تعتمد على المنوال الذي لا الكلمة.

على الرغم من C# يعرف مواصفات الباحث الكلمة كما صريحة مستعار النظام.Int32, انها لا تزال مشكلة الحصول على هذه المعلومات عن نوع صريح (Int32) أثناء تحليل الخطوة لأنه يتطلب الكثير من سياق المعلومات التي لا يمكن الاستدلال على هذه الخطوة.

نصائح أخرى

مألوفة الفضول...اللغة المواصفات الأمريكية (14.1):

وهو التعداد الإعلان قد تعلن صراحة الكامنة نوع بايت ، sbyte, قصيرة, ushort ، الباحث ، uint طويلة أو ulong.لاحظ أن الأحرف لا يمكن أن تستخدم أساسيا نوع.وهو التعداد الإعلان التي لا تعلن صراحة الأساسية لنوع الأساسية من نوع int.

ولكن منذ int هو عموما مجرد اسم مستعار System.Int32 ليس غير معقول أعتقد إما قد عمل...ولكن في الواقع لا.أنها ليست عادة مشكلة كبيرة ، ولكن فضول لا أكثر ولا أقل

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