ما هو أفضل وسيلة لتنفيذ الممتلكات التي هي للقراءة فقط للجمهور، ولكن للكتابة على الورثة؟

StackOverflow https://stackoverflow.com/questions/219904

  •  03-07-2019
  •  | 
  •  

سؤال

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

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
}
protected void SetMyProp(object value)
{
    m_myProp = value;
}

هل هناك طريقة أفضل؟

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

المحلول

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
    protected set { m_myProp = value; }
}

وأو في C # 3.0

public object MyProp {get; protected set;}

نصائح أخرى

وهذا هو بالتأكيد وسيلة للذهاب.

public object MyProp {get; protected set;}

إذا كنت على نسخة قديمة من C # ثم وهذا هو الطريق للذهاب.

private object _myProp;
public object MyProp
{
    get { return _myProp; }
    protected set { _myProp = value; }
}

وجود اضع وجالبة ليست في الحقيقة أي أفضل من وجود متغير في هذا المستوى من الرؤية.

لذلك هل يمكن أن مجرد جعل المتغير نفسه حماية والجمهور القارئ.

وقال ان واضعي وحاصل هي مؤشر على OO سيئة - هل أنت متأكد أنك في حاجة إليها؟ يجب عليك أن تسأل الكائن أن تفعل شيئا مع أعضائها، لا نطلب ذلك لأعضائها ثم التلاعب بها خارج الكائن.

وهذا هو قاعدة عامة جدا وهناك الكثير من الاستثناءات.

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