자동 속성을 사용할 때 컴파일러는 화면 뒤에 자체 백업 필드를 생성한다는 것을 알고 있습니다. 그러나, 많은 프로그램에서 나는 명시 적으로 아래역전지가 있거나없는 자동 속성 - 환경 설정?
private int _backingField;
public int Property { get { return _backingField; } }
의 차이는 위의 무엇이며, 쓰기, 나는 사람들을 볼 배울 읽어?
public int Property { get; private set; }
나는 당신이 실제로는 getter 또는 세터의 부작용이있을 때 명백한이 속성을 사용하는 것을 이해하지만 종종 그렇지 않다. 또한 구조체의 경우에는 명시 적으로 배킹 필드를 사용해야한다는 것을 알고 있으므로 속성을 통해 멤버에 액세스 할 수 없습니다.
내가 발견 할 수 있었던 유일한 차이점은 값을 호출하는 방법이 정의 된 클래스 내에서 다름이라는 점입니다. 간단한 기본 설정인가, 아니면 속성을 통해 값을 호출하는 것이 더 많은지 또는 직접 필드에 액세스하여? 간단한 규칙은 무엇입니까?
예를 들어 XNA의 Vector2를 사용하면 내가 말하면 public Vector2 TheVector {get; 세트; } 전화 할 수 없습니다. TheVector.X = 10; 대신 실제 필드를 사용해야합니다. 값/참조로 전달하는 것에 관한 것. (C#의 값/참조로 전달하는 것을 설명하는 읽기 자료가 있습니까?) – Taelia
또한 두 예제가 실제로 차이가 없다면 왜 그렇게 많은 사람들이 실제적으로 백킹 필드를 명시 적으로 생성합니까? 목적)? – Taelia
@Taelia : 맞습니다. 일반적으로 피해야하는 가변 구조체의 경우입니다. 이 속성은 값의 복사본을 반환하기 때문입니다. 그리고 나는 다른 사람들이하는 일에 대한 이유를 밝히려하지 않을 것입니다. –