2015-01-14 3 views
-3

메서드 변수 var pitch에 저장된 값에 액세스하려고하지만 다른 메서드에서이 메서드 변수에 액세스하는 방법을 모르겠습니다.메소드 외부에서 'var'유형의 변수에 액세스하는 방법은 무엇입니까?

보통 나는이 변수를 private var pitch과 같은 클래스 필드로 선언하지만 메서드 var를 사용하여이 작업을 수행 할 수없는 것으로 보입니다.

다른 방법으로 변수 또는 변수의 값에 액세스하는 방법을 알고 있습니까?

pitch가 생성 및 피치 값 할당하는 방법입니다 : 나는 다음과 같이 값이 액세스 할

private void Myo_OrientationDataAcquired(object sender, OrientationDataEventArgs e) 
     { 
      const float PI = (float)System.Math.PI; 

      var pitch = (int)((e.Pitch + PI)/(PI * 2.0f) * 10); 

     } 

그리고 방법을,하지만 난 pitch에게 doesn't exist in the current context 그것을 참조 할 때 : 한마디로

private void Pose_Triggered(object sender, PoseEventArgs e) 
     { 
      App.Current.Dispatcher.Invoke((Action)(() => 
      { 

       poseStatusTbx.Text = "{0} arm Myo holding pose {1}" + e.Myo.Arm + e.Myo.Pose; 
       //error trying to reference pitch here. 
       pitch = pitchDefault; 


      }));  
     } 
+2

사용 속성은 피치 값을 설정하고 피치 값 – HaveNoDisplayName

+5

를 얻을 수 * 보통 나는이 개인 VAR 피치와 같은 클래스 필드로 변수를 선언 할 것입니다하지만 당신은 방법 VAR이 할 수없는 것입니다. * 다음 사용' 개인 int 피치', ** 당신이 ** 알고 ** ** 피치는 int입니다. (Btw.'var'은 타입이 아닙니다.) – Dirk

+0

[로컬 변수] (http://msdn.microsoft.com/en-us/library/bb384061.aspx) - 메소드 밖에서 액세스 할 수 없습니다. – Reniuz

답변

3

, 당신은 필드 (또는 속성)를 사용해야합니다 그리고 당신은 사용할 수 없습니다 var :

private int pitch = 0; 
1

var "컴파일러가 형식을 결정해야합니다."- "변형"또는 자체 형식이 아님을 의미합니다.

당신이 int에 캐스팅되어 있기 때문에, 단지 개인 int 필드 추가 :

private int pitch; 

private void Myo_OrientationDataAcquired(object sender, OrientationDataEventArgs e) 
{ 
    const float PI = (float)System.Math.PI; 

    pitch = (int)((e.Pitch + PI)/(PI * 2.0f) * 10); 

} 

private void Pose_Triggered(object sender, PoseEventArgs e) 
{ 
    App.Current.Dispatcher.Invoke((Action)(() => 
    { 
     poseStatusTbx.Text = "{0} arm Myo holding pose {1}" + e.Myo.Arm + e.Myo.Pose; 
     //error trying to reference pitch here. 
     pitch = pitchDefault; 
    }));  
} 
1

VAR는 NOT 유형입니다, 그것은 변수의 유형을 의미 키워드의 오른쪽에서 infered 될 것이다 귀하의 경우 피치에 문

가 문제 해결의 Myo_OrientationDataAcquired

외부에서 클래스의 전용 변수를 정의하는 INT32 유형이 될 것입니다
int pitch; 
private void Myo_OrientationDataAcquired(object sender, OrientationDataEventArgs e) 
    { 
     float PI = (float)System.Math.PI; 

     pitch = (int)((e.Pitch + PI)/(PI * 2.0f) * 10); 

    } 
관련 문제