2013-06-03 3 views
1

는이 같은 클래스 구조를 가지고 :기본 클래스 전역 변수에 액세스하려면 속성을 사용해야합니까?

public class PingtreeReq : ProviderRequest 
{ 
    // I want to use _residentialService here! 
} 

public class ProviderRequest 
{ 
    // Should this be a variable or property? 
    protected Dictionary<int, string> _residentialSerice; 
} 

내가 MyLenderRequest에서이 varable를 사용하려는 경우,이 속성을 사용하는 것이 더 적합하거나 적절한 보호 varable으로 이런 식으로 접근한다?

+2

당신은'_residentialStatus'가'ProviderRequest'에 있다는 것을 의미합니까? – V4Vendetta

+2

@ V4Vendetta - 질문에서 내가 추론하는 _residentialStatus는 현재 '비공개'이며 OP는 'protected'로 설정해야하는지 아니면 'protected'로 설정해야하는지 궁금합니다. Btw. 나는 프로퍼티를 사용할 것이고'ProviderRequest' 내부는'_residentialStatus'에 대한 모든 호출을 변경합니다.이 프로퍼티를 사용하기 위해서는 변수를 직접 사용할 필요가 없습니다. 변수를 직접 사용하는 곳이 없으면 자동 속성으로 변경합니다. – Corak

+0

C#의 컨텍스트에서 "전역 변수"란 무엇입니까? '_residentialStatus' 정의를 게시하십시오. – Dennis

답변

1

외부에서 공용 속성으로 사용하려는 경우 상속하는 클래스에서만 사용하려고하면 해당 속성을 보호 된 속성으로 만듭니다.

public class ProviderRequest 
{ 
    protected Dictionary<int, string> ResidentialService { get; set; } 
} 
+2

정의 된 클래스에서 내부적으로 사용하는 경우에도 필드가 아닌 속성을 직접 사용합니다. – Bernard

+0

@Bernard - 동의 함. 값을 반환하는 단순한 속성 일 경우 * maybe * 일 수 있습니다. 그러나 다시, 왜 그것을 만들지 않겠습니까? 개인 집합; }'. 속성에 논리를 추가하려면 사용하는 코드의 일부와 그렇지 않은 부분이있어 예측 가능성에 도움이되지 않습니다. – Corak

+0

예, 동의합니다. 그의 경우에는 필드에 대해 말했고 필드를 외부에서 사용할 수있게 만드는 대신 필드를 표시하는 속성을 추가했습니다. – Molibar

3

_residentialStatus은 개인 변수와 비슷합니다. 개인 변수를 캡슐화하는 ProviderRequest에 보호 된 속성을 추가하고이를 ProviderRequest에 사용할 수 있습니다.

관련 문제