سؤال

إليك تخطيطي الحالي: (السؤال هو التعليق)

class A
{  
    int foo;  
}

class B : A {}

class C : B
{
    void bar()
    {
        //I want to access foo
        base.foo; // Doesn't work
        base.base.foo // Doesn't work, of course
    }
}

كما ترون، لا أستطيع الوصول إلى أعضاء A باستخدام base في C. كيف يمكنني الوصول إليها؟ شكرا :)

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

المحلول

إذا قمت بإجراء حماية فو،

class A
{  
    protected int foo;  
}

ثم قاعدة بسيطة ستفعل:

  void bar()
  {
        //I want to access foo
        base.foo; // will work now
        // base.base.foo // Doesn't work, of course
  }

ولكن سيكون من الأفضل بناء خاصية (محمية) حول فو:

   class A
   {  
        private int _foo;  
        protected int Foo 
        {
           get { return _foo; }
           set { _foo = value; }
        }
   }

نصائح أخرى

يتم الإعلان عن الحقل في أ. يجب أن تكون محمية لفئات مشتقة للوصول إليها.

وضع الجمهور أمام int foo؛

class A
{  
    public int foo;  
}

class B : A {}

class C : B
{
    void bar()
    {
        //I want to access foo
        base.foo; // Now you can see it
    }
}

بشكل افتراضي ما لم تحدد خلاف ذلك جميع الأعضاء خاصة.

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