C# 用于kinect的lambda函数
我在读关于kinect的文章 我在这段代码中遇到了一个问题: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
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
。