2011-02-27 2 views
6

저는 클래스의 인스턴스를 만들기 위해 getters와 setters를 사용하고 있습니다.set/getter에 대해서만 setter 지정

개인 변수가 없어도 설정 한 값을 조정할 수 있습니까? 형식에 직접 적용 할 수 있습니까?

public class Cat() 
{ 
public String Age{get; set; } 
} 

와 나는 일을 인스턴스화 할 :

예를 들어, 내 수업은 내가 만약 내가 그것을하기 전에 호출 할 함수라는 ConvertToHumanYears이있는 경우,

new Cat({Age: "3"}); 

을 지금 저장되고있는 동안, 나는 이것 같이 적당한 무언가가 상상할 것입니다 :

그러나 상기의 그것의 많은 dirivatives) 오류를 반환하는 것 같습니다. 내가 설정하고 얻는 추가 개인 변수를 가질 필요없이 비슷한 것을 할 수 있습니까?

+0

:

그런 다음 값을 설정 허용하는 생성자를 만들 수 있습니까? – ctacke

답변

17

getter에 자동 속성을 사용할 수없고 setter에 대한 정의가 없습니다.

그것의 하나

public class Cat() 
{ 
    public String Age{get; set; } 
} 

또는 이것에 대해

public class Cat() 
{ 
    private String _age; 

    public String Age{ 
     get{ 
      return _age; 
     } 
     set{ 
      _age = ConvertToHumanYears(value); 
     } 
    } 
    } 

} 
+0

아, 그게 내가 가진거야,하지만 개인 변수를 추가하지 않고 깨끗하게하기를 바랬다. ( – Steve

+1

이유는 컴파일러가 실제로 런타임에 개인 변수를 즉석에서 작성하기 때문에 혼합 할 수 없다. @StackOverFlowException이 맞습니다. –

2

어떻게?

public class Cat 
{ 
    public string Age { get; private set; } 
} 

세터가 있어야하지만 클래스 내부에서만 호출 할 수 있습니다. 이것은 VB와 같은 많은 이유는 C 번호로 태그를 보이는

public Cat(string age) 
{ 
    Age = age; 
} 

또는

public Cat(string age) 
{ 
    Age = ConvetToHumanYears(age); 
}