【问题标题】:not all code paths return a value in c#并非所有代码路径都在 C# 中返回一个值
【发布时间】:2014-11-01 22:19:58
【问题描述】:

我正在尝试在 c# 中为 kinect 制作拍手程序,但我收到了 GetJointDistance 方法的“并非所有代码路径都返回值”这个错误 这是我的方法

【问题讨论】:

  • 您应该返回 float 的方法中没有单个 return 语句。
  • 错误信息很清楚。你读过里面的真话吗? (虽然它可能会更好:“没有代码路径返回值”会更具体。)跳过“错误”这个词并阅读实际消息本身非常重要 - 消息有意义,而且通常都很清楚。

标签: c# kinect


【解决方案1】:

你写的方法应该返回一个float

private float GetJointDistance

但是,您的方法主体没有 any return 语句 - 所以不仅不是所有代码路径都返回值,none 都有。

您应该通过添加返回来解决此问题:

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

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多