2009-04-27 5 views
2

public 속성을 사용하여 개인 변수에 액세스하는 대신 공용 속성을 사용하는 것의 이점은 무엇입니까? Public 속성 및 개인 멤버 C#

public int iMyInt { get; set; } 

대신 .NET이 건물 아래에있는 변수/메모리를 관리시키는 것보다 다른

private int myint; 
public int iMyInt { get { return myint; } set { myint = value; } } 

예를

를 들어

, (그 문제에 대한 또는 단점) 장점은 무엇입니까?

답변

11

자동 속성 (첫 번째 예)을 사용하면 타이핑이 덜 필요합니다.

공개 입력란 만 포함하고 공개 입력란은 사용하지 않는 것이 좋습니다. 많은 속성은 개인 필드 주위의 간단한 래퍼입니다. 자동 속성은 속성과 배경 필드를 수동으로 만드는 번거 로움을 덜어줍니다.

언급 한 간단한 사례의 자동 및 수동 속성 뒤에있는 실제 코드는 거의 동일해야합니다.

+2

공용 속성을 사용하는 것이 유리한 경우 데이터 바인딩도 활용하려면 – RobS

1

재산을 얻거나 설정할 때 어떤 일이 일어나기를 원할 때까지 어떤 차이가 없습니다.

예를 들어 OnMyIntSet 이벤트를 원할 경우 자동 속성 구문을 사용할 수 없습니다.

4

IL에 컴파일되면 두 개는 거의 동일합니다.

내 경험상 개인적으로, 자동 속성을 사용하는 것입니다. 그들은 더 간결하고 더 적은 타이핑을 요구하며, 나는 그것을 사용할 때 논리가없는 단순한 래퍼 일 뿐이라는 것을 알고 있습니다.

나중에 논리를 추가해야하는 경우 내 자체 필드로 전환하기 쉽고 (외부) 결과가 없습니다.

8

적은 타이핑을 요구하는 것이 코드의 가독성 향상이라는 것보다 더 중요하다고 제안합니다. 일반적으로 자동 속성을 기본 옵션으로 사용하고 특정 요구 사항이있는 경우 명시 적 속성으로 전환하는 것이 좋습니다.

+2

+1, 우수 포인트. 뒷받침 필드가있는 속성으로 인해 많은 보일러 플레이트 코드가 생겨 클래스의 "중요"부분을 산만하게합니다. – Michael

1

필자가 개인적으로 선호하는 것은 필요한 경우가 아니면 자동 속성에 대한 것입니다.

자동 속성을 사용하는 이점은 물론 간결합니다. 여유 공간이 적어 읽기가 더 쉽고 입력하기가 쉽습니다.

단점은 개인 백업 변수에 더 이상 액세스 할 수 없다는 것이며, 때로는 이 필요하다는 것입니다.

그래서 개인용 백업 변수를 사용해야하는 경우 "이전"방법을 사용하십시오. 그렇지 않으면 자동 속성을 사용하십시오. 공개 필드를 사용하지 마십시오. 그것은 단지 미친 이야기입니다.

0

잠깐주의 : 자동으로 구현되는 속성은 get 및 set 접근자를 모두 정의해야합니다.

관련 문제