2014-11-01 24 views
-2

我想在c#中爲kinect製作clap程序,但我得到這個錯誤「並非所有的代碼路徑都返回一個值」GetJointDistance方法 這裏是我的方法不是所有的代碼路徑在c#中返回一個值#

+8

你的方法是應該返回'float'沒有一個單一的'return'聲明在裏面。 – 2014-11-01 22:20:42

+0

在這個方法中,也沒有什麼可以改變'handRight'和'handLeft'的最終值,所以我想你的下一個問題將是堆棧溢出異常,因爲你正在進行遞歸。 – 2014-11-01 22:22:32

+4

錯誤消息非常清楚。你有沒有讀過它的實際單詞? (雖然它可能會更好:「沒有代碼路徑返回值」會更具體。)通過「Error」這個詞並**讀取實際的消息本身**是非常重要的 - 消息具有含義,通常他們很清楚。 – 2014-11-01 22:26:21

回答

1

你理應寫入的方法返回一個float

private float GetJointDistance 

然而,你的方法的身體沒有任何return報表 - 這樣不僅不所有代碼路徑返回一個值,沒有做。

則應該通過添加返回解決這個問題:

private float GetJointDistance(Joint handR, Joint handL) 
{ 
    Skeleton s = new Skeleton(); 
    Joint handRight = s.Joints[JointType.HandRight]; 
    Joint handLeft = s.Joints[JointType.HandLeft]; 
    if (handRight.TrackingState == JointTrackingState.Tracked && 
    handLeft.TrackingState == JointTrackingState.Tracked) 
    { 
     this.GetJointDistance(handRight, handLeft); 
    } 

    return xyz;  // xyz must be a float 

} 

請注意,如果您if聲明意味着你需要返回別的東西,你需要在if聲明第二return。儘管目前你很可能會溢出籌碼,具體取決於國家隊的狀態是多少次Tracked

或者,讓你的方法返回void,你似乎並不需要在瞬間返回:

private void GetJointDistance 
相關問題