Point struct拒绝创建

时间:2011-03-09 21:22:40

标签: c# .net debugging point

这应该很简单。这是我的一行代码,它给我带来了麻烦:

Point tp3 = new Point(0.0, 0.0);

然而,如果我在此之后直接中断并在“立即”窗口中键入“tp3”,我会得到“当前上下文中不存在名称'tp3'。”到底他妈发生了什么?我在这个项目中有更多的代码,而不仅仅是那一行,但我不确定会影响它的是什么。在这之后我直接打破了这条线,并且tp3无处可见。如果我在休息模式下将鼠标悬停在tp3上,我也什么也得不到。

有谁知道造成这种情况的原因是什么?为什么C#不让我创建一个Point ??

编辑:我正在使用System.Windows.Point结构,当我打算在Debug中时,我发现我实际上是在Release模式下运行。当然,这是问题所在,因为tp3正在被垃圾收集。感谢大家快速准确的回复!我正要把我的脑筋拉出来。是的,我的大脑。

编辑#2:实际上,正如Maupertuis指出的那样(双关语完全是预期的),因为Point是一个结构,它不是被收集的,而是编译器甚至没有首先为它分配空间,因为它不是没用过。谢谢Maupertuis!

3 个答案:

答案 0 :(得分:4)

如果不再使用tp3,它将被归类为超出范围并受垃圾收集。

尝试在您的行之后添加Point tempP = tp3;之类的内容,然后您应该能够看到它。

答案 1 :(得分:2)

如果在项目属性中选中了Optimize Code复选框,它将在上次使用后将本地对象设置为null,以便可以对其进行垃圾回收。此外,如果变量未在任何地方使用,则实际上不会被分配。

不直接依赖于Debug或Release模式,但Debug模式默认为unchecked(未优化),Release默认为checked。

答案 2 :(得分:1)

您正在将浮点参数传递给整数构造函数。

尝试实例化PointF:

PointF tp3 = new PointF(0.0f, 0.0f);

更好的是,因为PointF只是一个结构使用:

PointF tp3 = PointF.Empty;