在C#中有什么替代Constant吗?

时间:2014-06-02 16:14:40

标签: c# visual-studio-2010 xna constants kinect

我正在使用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'的表达式必须是常量

2 个答案:

答案 0 :(得分:8)

永远不要改变价值。 constant关键字用于编译时常量,而不是运行时!

您可以使用readonly并在构造函数中指定此值。除此之外,我认为没有针对您情况的特定关键字。

答案 1 :(得分:2)

readonly允许您在构造函数中设置值,但禁止任何进一步的更改。

  

readonly关键字是一个可以在字段上使用的修饰符。当一个   字段声明包括一个只读修饰符,赋值给   声明引入的字段只能作为其中的一部分出现   声明或在同一类的构造函数中。

http://msdn.microsoft.com/en-us/library/acdd6hb7.aspx