2010-01-27 14 views
3

추상 클래스 나 부모 클래스의 public 속성 뒤에 특성 가시성 (비공개 또는 보호 된)을 정의하는 방법에 대한 C# 모범 사례를 알고 있습니까? 다른 세계에서추상 클래스의 속성 가시성

것을 기본 (왜)에 의해 가장 좋은 방법은 사이 :

public abstract class MyClass 
{ 
    private string myAttribute; 

    public string MyAttribute 
    { 
     get { return myAttribute; } 
     set { myAttribute = value; } 
    } 
} 

public abstract class MyClass 
{ 
    protected string myAttribute; 

    public string MyAttribute 
    { 
     get { return myAttribute; } 
     set { myAttribute = value; } 
    } 
} 

나는 아이들이 클래스는 직접 보호 속성을 처리 할 수있는 방법이해야한다고 생각하지만를 getter 또는 setter에 더 많은 코드가 포함되어 있으면 좋은 방법이 아닐 수도 있습니다 ...

어떻게 생각합니까?

감사합니다.

답변

8

비 const 필드는 항상 항상 개인이어야합니다. 어떤 이유로 자동 속성을 사용할 수 없기 때문에 필드를 사용해야하는 경우 비공개로 설정해야합니다. 어린이 수업은 공개 또는 보호 된 속성을 통해 액세스해야합니다.

+0

, 나는 심지어 포함 된 클래스가 속성을 통해서만 액세스해야한다고 생각하고 있습니다. –

2

확실히 비공개입니다. 그러나 수행하는 작업을 수행하는 더 쉬운 방법이 있습니다.

public abstract class MyClass 
{ 
    public string MyAttribute { get; set; } 
} 

이것은 똑같은 기능을하지만 유지 관리가 훨씬 쉽습니다.

+1

+1, getters/setter에서 처리해야 할 특별한 처리가없는 경우에 유용합니다. getter 및 setter에 대한 공개 및 비공개 권한을 제한 할 수도 있습니다. – FrustratedWithFormsDesigner

+0

자, 자동 구현 속성을 알지 못했습니다! – Vince

2

확실히 비공개입니다. 추상 클래스를 정의 할 때 다음과 같은

  1. 하위 클래스를 무시하거나에서

에 액세스 할 수 있어야

  • 외부 클래스에 대한 액세스 권한이 있어야합니다 부합하는 행동 인 경우 난 단지 보호 항목을 이 경우 이미 외부 클래스에 값에 대한 액세스 권한을 부여했습니다. 보호를 받으면 서브 클래스에 실질적인 이점이 없습니다.

  • +0

    여러분 모두에게 감사합니다. – Vince

    +0

    나는 올바른 대답이어야한다는 점에 유의하여 답변을 upvoting했습니다. private backing 필드는 분명히 표준이지만, 속성을 재정의해야하는 경우는 거의 없습니다. –

    0

    public get, protected set : comments에 대한 한 가지 제한 사항을 발견했습니다. 의견을 존중 stylecop, 공공 및 보호에 대해 동일하지 않아야하기 때문에 : - 대중 코멘트 : 주석을 가져옵니다 - 보호에 대한 코멘트 : 가져 오거나 설정 내가 모두 가시성이 속성을 싶지 않아

    코멘트 , 그래서 나는 다음과 같은 코멘트와 함께 quiclky를 해결했다. ot set (protected) 코멘트를 얻지 못한다.

    실전에 도움이된다면 환영합니다. 그 문제에 대해