2011-11-29 2 views
3

저는 C# 애호가로 시작하고 있으며 속성은 항상 공개되어야한다고 생각합니다. 사유 재산은 말이되지 않습니다. 그럴 거니?C# 개인 속성 - 사용/의미가 있습니까?

이겠습니까 :

private string propertyOne {get; set;} 

이 동등 :

public string propertyOne {private get; private set;} 
+0

예 동일합니다. 다른 누군가를 위해 수업을 쓰고 있다면 파일에 물건이있을 수 있습니다. 액세스 권한을 원하지 않습니다. 예를 들어, 누군가는 이자율을 원하지만 환율의 가치를 바꿀 수 없기를 바랄 것입니다. 이 경우 공개 double rate {get; 개인 설정;} – samack

+2

참고 사항 : 라이브러리 개발자를위한 .NET 디자인 지침에서는 속성을 파스칼 케이싱 (Pascal Cased)으로 지정합니다. http://msdn.microsoft.com/en-us/library/x2dbyw72%28v=vs.71%29.aspx – Alan

+2

최신 링크는 http://msdn.microsoft.com/en-us/library/입니다. ms229043.aspx. 게시 된 링크는 .NET 1.1입니다. –

답변

11

예. 특히 getters/setter에 구현하려는 논리가있는 경우 개인 속성이 적합 할 수 있습니다. 클래스 내에서 이들을 액세스 가능하게 할 수 있습니다 (따라서 private입니다).하지만 getter/setter 논리를 한 곳에서 캡슐화하려고합니다.

인쇄 한 두 줄의 코드에는 차이가 있습니다. 공개 속성을 반영하는 사용자는 첫 번째 항목을 볼 수 없지만 getter/setter를 호출 할 수 없더라도 두 번째 항목을 볼 수 있습니다.

4

속성을 사용하는 아이디어는 캡슐화보다는 '외부 세계'에 원시 변수를 제시하는 것입니다. 그렇게하면 액세서에 여분의 로직을 추가 할 수도 있습니다.

아니요, 순수한 사유 재산은 일반적인 사용 사례가 아닙니다.

개인용 설정 도구로 공공 시설을 보는 것은 드문 일이 아닙니다.

0

네, 그렇습니다. 후자는 기능면에서는 앞의 기능과 동일하지만 기능을 구현하는 것은 의미가 없습니다.

나는 가끔 내가 그것을 공개 할 만 클래스가이 값을 설정할 수에 존재

public string propertyOne {get; private set;} 

를 사용하는 경향이있다. 하지만 대부분은 다른 로직을 getter에 캡슐화하여 다른 기능을 수행하기를 원하는 경우도 있습니다.

하지만 다른 기능을 캡슐화하기 위해 공용 속성 인 경우가 많습니다.

+0

예를 들어 propertyOne은 세계에서 설정할 수 있지만 비공개로만 읽을 수 있습니다. 그게 당신이 의도 한 것입니까? –

+0

나는 그것을 알아 차 렸으며 문자 그대로 초를 편집했다. =) – Chris

0

예, 두 비트의 코드는 같습니다. 자동 getter/setter로 개인 속성을 생성 한 적이 없습니다. 매우 유용하지 않습니다. 필자는 getter에 대한 실제 구현과 함께 개인 속성을 사용했습니다. 개인 get 메소드 (또는 속성 getter)가 유용 할 수 있습니다.