我正在使用Microsoft XNA和Kinect创建程序。我想得到一个骷髅的宽度。我有骷髅右手和左手点。我减去它们并获得骨架的宽度。我希望将此值存储在常量中,以便在Skeleton移动到任何位置时它不会改变。
我编写了以下代码,但它给出了以下错误消息。请告诉我任何替代方案或指导我如何使用常量
Joint hand = skl.Joints[JointType.HandRight];
DepthImagePoint rightShoulderPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(rightShoulder.Position, DepthImageFormat.Resolution640x480Fps30);
DepthImagePoint leftShoulderPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(leftShoulder.Position, DepthImageFormat.Resolution640x480Fps30);
修改 //例如 //这些值将根据骨架位置不断变化。我想冻结//这些点并将它们存储在某个变量中。
rightShoulderPt.X = 200; leftShoulderPt.X = 450;
const float totalWidth = rightShoulderPt.X - leftShoulderPt.X;
错误1分配给'totalWidth'的表达式必须是常量
答案 0 :(得分:8)
永远不要改变价值。 constant
关键字用于编译时常量,而不是运行时!
您可以使用readonly
并在构造函数中指定此值。除此之外,我认为没有针对您情况的特定关键字。
答案 1 :(得分:2)
readonly
允许您在构造函数中设置值,但禁止任何进一步的更改。
readonly关键字是一个可以在字段上使用的修饰符。当一个 字段声明包括一个只读修饰符,赋值给 声明引入的字段只能作为其中的一部分出现 声明或在同一类的构造函数中。