2012-05-17 2 views
0

이 모두 동일합니까?변수 프로퍼티

가끔 두 번째 경우에 때때로 첫 번째 경우와 코드와 참조, 그래서 난

+0

그럼 난 당신이'공공 INT의 X를 사용한다고 생각 {얻을; 세트; }':) – V4Vendetta

+0

무엇이 문제입니까? 소스 코드에서 배킹 스토어 필드를 넣을 곳은 어디입니까? 변수를 사용한다면 선언을해야합니다. 그렇지 않으면 {get; set;} 구문을 사용합니다. 그렇지 않으면 코드가 컴파일되지 않습니다. –

답변

1

으로 백업 INT 필드를 만들 것이기 ​​때문에 당신의 두 번째 경우는 컴파일되지 않습니다. 'x'(소문자)가 정의되지 않았기 때문입니다.

다른 옵션은 '자동 재산'

public int X {get; set;} 

를 사용하는 것입니다이 모든 컴파일러는 자동으로 직접 액세스 할 수 없음을, 장면 뒤에 백업 필드를 생성 할 것입니다,하지만 대부분입니다 않습니다 첫 번째 예와 동일합니다.

1

혼란 때문에 x 현재 정의 범위에 존재하지 않는 경우는 두 번째 경우를 사용할 수 없습니다! 어디서든 두 번째 경우에서와 같이 x의 선언이 표시되지 않는 경우 그 매우 가능성 비록

은, 다음, 일부 부모/기본 클래스의 protected 필드 수 있습니다.

또는 명시적인 배경 필드없이 automatic property을 만들었습니까? 이 경우 또는 첫 번째 경우는 일반적으로 발생하는 것입니다.

public int X { get; set; } 
1

두 번째 발췌 문장이 성공적으로 컴파일됩니다. 다음

개념적으로 동일

private int x; 
public int X 
{ 
    get { return x; } 
    set { x = value; } 
} 

public int X {get;set;} 

왜 개념적으로 동일 : 두 번째 문은 임의의 이름 (반드시 X)

2

x이 선언되지 않았기 때문에 두 번째 컴파일이 수행되지 않습니다! 당신이 X에 어떤 제어를하지 않으려면 당신은 쓸 수 있습니다 :

public int X { get; set; } 
관련 문제