2010-04-06 4 views
2

자동 속성이 있습니다.C에서 자동 속성을 초기화 할 수 없습니다.

public int GearCount {get; 세트; }

제가

this-

직렬 t = 새로운 직렬 같이 초기화 시도 (GearCount = 5);

그것은 다음과 같은 오류를 제공

현재 컨텍스트 무슨 잘못 여기

에 존재하지 않는 'GearCount'이름? 또한 정상적인 intantiation 경우 잘 작동합니다. 텐덤 t = 새 텐덤();

+8

Tandem t = new Tandem() {GearCount = 5}; ? –

+4

'GearCount'와'HasToolkit'의 관계는 무엇입니까? – Gorpik

+0

미안하다. hastoolkit을 Gearcount로 교체했습니다. –

답변

10

우리는 당신이 우리에게 HasToolkit라는 자동 속성을 보여 그러나 당신이 발생하는 문제가 HasToolkit와는 아무 상관이없는 코드

의 휴식이 필요.

Tandem 클래스의 자동 등록 정보가 GearCount으로 보이지 않습니다.

문제가 해결되면 문법적 문제가있는 것처럼 보입니다.

public class Tandem 
{  
    public bool HasToolkit {get; set;} 

    public int GearCount {get; set;} 
} 

그런 다음 초기화 코드는 다음과 같습니다 :

Tandem 클래스처럼 보이는 경우

Tandem t = new Tandem() { GearCount = 5 }; 

또는를 :

속성이 HasToolKit 이름이며 때문이다
Tandem t = new Tandem() { GearCount = 5, HasToolkit = true }; 
+0

UR 빠른 답변에 대한 감사합니다 !!!! 다시 한 번 감사드립니다! –

+0

문제 없습니다.질문을 변경 한 시점에서 업데이트되었습니다. –

1

bool 유형의 이름은가 아닙니다. 형식은 int 인입니다.

이렇게하려면 생성자 및 속성 이니셜 라이저 구문도 혼합되어있는 것 같습니다. 당신이 호출 경우 싶어 것은 : HasToolKit 사물의 제도의 의미를 아주 확실하지

public int GearCount { get; set; } 

:

Tandem t = new Tandem {GearCount = 5}; 

는 탠덤의 정의는의 종류의 뭔가를해야합니다 .

+0

정말 감사합니다 !!!! 나는 크게 ur 도움을 appriciate. u는 내가 실제로 생성자 구문과 속성 초기화 구문을 섞고 있다고 말했다. –

+0

도움이되기를 기쁘게 생각합니다. 해피 코딩! –

2

선언 한 속성은 초기화 프로그램에서 설정하려는 속성과 이름이 동일하지 않습니다. 또한 이니셜 라이저를 사용할 때 괄호 대신 중괄호를 사용해야합니다.

var t = new Tandem{ HasToolKit = true }; 
+0

감사합니다 !! 내 실수는 오타였다 .. 지금 문제를 해결했다. –

관련 문제