سؤال

ولقد لاحظت أنه يمكنك القيام بذلك في C #:

Unit myUnit = 5;

وبدلا من الاضطرار للقيام بذلك:

Unit myUnit = new Unit(5);

لا أحد يعرف كيف يمكن تحقيق ذلك مع البنيات الخاصة بي؟ كان لي نظرة على البنية حدة مع عاكس ولاحظت أنه يجري استخدام السمة TypeConverter، ولكن بعد أن خلق TypeConverter مخصصة لبلدي البنية لم أستطع الحصول على مترجم للسماح بناء الجملة هذا مريحة.

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

المحلول

وتحتاج إلى توفير عامل التحويل الضمني من الباحث إلى وحدة، كما يلي:

    public struct Unit
    {   // the conversion operator...
        public static implicit operator Unit(int value)
        {
            return new Unit(value);
        }
        // the boring stuff...
        private readonly int value;
        public int Value { get { return value; } }
        public Unit(int value) { this.value = value; }
    }

نصائح أخرى

وتحتاج إلى توفير معامل تحويل للفئة التي تأخذ Int32.

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