C# 用于kinect的lambda函数

C# 用于kinect的lambda函数,c#,wpf,kinect,kinect-sdk,C#,Wpf,Kinect,Kinect Sdk,我在读关于kinect的文章 我在这段代码中遇到了一个问题: void kinectSensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { SkeletonFrame frame = e.OpenSkeletonFrame(); if (frame == null) return; Skeleton[] skeletons ; skeletons = fra

我在读关于kinect的文章

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

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的值


还有什么是
Skeleton.All
的意思以及它返回的是什么?

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

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

private bool YourMethod(Skeleton s)
{
    return s.TrackingState == SkeletonTrackingState.NotTracked
}
…并将此项传递给
All
方法:

if (skeletons.All(YourMethod))
YourMethod
将为
Skeleton
中的每个
Skeleton
调用
YourMethod
,如果
YourMethod
为所有
Skeleton
对象返回
true
,则
All
方法将返回
true


s=>s.TrackingState==SkeletonTrackingState.NotTracked
YourMethod
的匿名版本:

s表示skelets中的一个项目。你读过关于LINQ的任何文章吗?如果你做了一些辅导,或者你不必ask@maccettura无(.)
骨架。All
确定
骨架[]
中的所有元素是否满足特定条件。在这种情况下,代码正在检查所有元素的
TrackingState
是否等于
SkeletonTrackingState.NotTracked
。如果它们都这样做,它将返回
true
,否则将返回
false