kinect中使用的lambda函数

问题描述 投票:1回答:1

我正在读这个关于kinect的book

我在这段代码中遇到了问题:

void kinectSensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
    SkeletonFrame frame = e.OpenSkeletonFrame();
    if (frame == null)
        return;
    Skeleton[] skeletons ;
    skeletons = frame.GetSkeletons();
    if (skeletons.All(s => s.TrackingState == SkeletonTrackingState.NotTracked))
        return;
}

在这个部分 :

if (skeletons.All(s => s.TrackingState == SkeletonTrackingState.NotTracked))

我想知道谁在上面的lambda exp中提供了参数s的值?

还有什么skeletons.All的意思和它的回报是什么?

c# wpf kinect kinect-sdk
1个回答
1
投票

All方法接受Func<Skeleton, bool>,而Func<Skeleton, bool>是一个委托,它封装了一个接受Skeleton参数并返回bool的方法。

您可以自己定义这样的方法:

private bool YourMethod(Skeleton s)
{
    return s.TrackingState == SkeletonTrackingState.NotTracked
}

...并将此传递给All方法:

if (skeletons.All(YourMethod))

如果YourMethod为所有那些Skeleton物体返回skeletonsAll将在true中被调用YourMethod并且true方法将返回Skeleton

s => s.TrackingState == SkeletonTrackingState.NotTrackedYourMethod的匿名版本:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/anonymous-methods

© www.soinside.com 2019 - 2024. All rights reserved.