kinect中使用的lambda函数
lambda function used in kinect
我正在阅读这篇关于 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
是什么意思以及 return 是什么?
All
方法接受一个 Func<Skeleton, bool>
和一个 Func<Skeleton, bool>
是一个委托,它封装了一个接受 Skeleton
参数和 return 的方法 bool
.
你可以自己定义这样一个方法:
private bool YourMethod(Skeleton s)
{
return s.TrackingState == SkeletonTrackingState.NotTracked
}
...并将这个传递给 All
方法:
if (skeletons.All(YourMethod))
YourMethod
将为 skeletons
中的每个 Skeleton
调用,并且 All
方法将 return true
如果 YourMethod
returns true
所有这些 Skeleton
个对象。
s => s.TrackingState == SkeletonTrackingState.NotTracked
是 YourMethod
的匿名版本:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/anonymous-methods
我正在阅读这篇关于 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
是什么意思以及 return 是什么?
All
方法接受一个 Func<Skeleton, bool>
和一个 Func<Skeleton, bool>
是一个委托,它封装了一个接受 Skeleton
参数和 return 的方法 bool
.
你可以自己定义这样一个方法:
private bool YourMethod(Skeleton s)
{
return s.TrackingState == SkeletonTrackingState.NotTracked
}
...并将这个传递给 All
方法:
if (skeletons.All(YourMethod))
YourMethod
将为 skeletons
中的每个 Skeleton
调用,并且 All
方法将 return true
如果 YourMethod
returns true
所有这些 Skeleton
个对象。
s => s.TrackingState == SkeletonTrackingState.NotTracked
是 YourMethod
的匿名版本:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/anonymous-methods