[c#] إخفاء منشئ غير المعلمة على الهيكل


Answers

لا يمكن إخفاء ذلك. لا تستطيع الهياكل إعادة تعريف مُنشئ arg ، لذلك لا يمكن إعادة تعريف إمكانية رؤيته.

Question

هل من الممكن إخفاء المنشئ غير المعلمة من مستخدم في c #

أريد أن أجبرهم على استخدام منشئ مع المعلمات

على سبيل المثال هذا الصف الوظيفة

public struct Position
{
    private readonly int _xposn;
    private readonly int _yposn;

    public int Xposn
    {
        get { return _xposn; }
    }

    public int Yposn
    {
        get { return _yposn; }
    }

    public Position(int xposn, int yposn)
    {
        _xposn = xposn;
        _yposn = yposn;
    }        
}

أريد فقط أن يتمكن المستخدمون من إنشاء موقع جديد بتحديد إحداثيات x و y

ومع ذلك ، فإن منشئ غير المعلمة هو دائما المتاحة

لا أستطيع جعلها خاصة. أو حتى تعريفه على أنه عام

لقد قرأت هذا لماذا لا يمكنني تحديد مُنشئ افتراضي لبنية في .NET؟

لكنه لا يساعد حقا

إذا لم يكن ذلك ممكناً - ما هي أفضل طريقة لاكتشاف ما إذا كان للموضع الذي أقوم بتمريره قيم؟

التحقق من صحة كل مجال الممتلكات؟ هل هناك طريقة سهلة؟

شكر




لا يمكنك إنشاء بنية مع منشئ المعلمة الخاصة أقل أو حتى إعلان منشئ المعلمة أقل. سيكون عليك تغييره إلى فصل دراسي. لا يسمح بنيات إعلان منشئ بدون المعلمات.

من البرنامج التعليمي Structures على MSDN:

يمكن للهياكل أن تعلن المنشئات ، ولكن يجب أن تأخذ المعلمات. من الخطأ إعلان مُنشئ افتراضي (بدون بارامترات) لبنية. لا يمكن أن يكون لأعضاء الهيكل مبدئي. يتم توفير مُنشئ افتراضي دائمًا لتهيئة أعضاء البنية إلى قيمهم الافتراضية.

من مواصفات C # على MSDN:

11.3 اختلاف الصف والبنية

تختلف الهياكل عن الفئات بعدة طرق مهمة:

  • الهياكل هي أنواع القيم (القسم 11.3.1).
  • جميع أنواع البنية ترث ضمنيًا من الفئة System.ValueType (القسم 11.3.2). يؤدي التعيين إلى متغير من نوع البنية إلى إنشاء نسخة من القيمة التي تم تعيينها (القسم 11.3.3).
  • القيمة الافتراضية لبنية هي القيمة التي تنتج عن طريق تعيين جميع حقول نوع القيمة إلى قيمتها الافتراضية وجميع حقول الأنواع المرجعية إلى خالية (القسم 11.3.4). تُستخدم عمليات الملاكمة والعلب الضائعة للتحويل بين نوع البناء والكائن (القسم 11.3.5).
  • معنى هذا مختلف للبنى (القسم 11.3.6).
  • لا يسمح لإعلانات مجال المثيل الخاصة بالبنية بتضمين مُبدِلات متغيرة (القسم 11.3.7).
  • لا يُسمح للبنية بإعلان مُنشئ مثيل بدون معلمات (القسم 11.3.8).
  • لا يُسمح للبنية بإعلان مدمر (القسم 11.3.9).





Links



Tags

c# c#   .net .net   struct