0

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

Point tp3 = new Point(0.0, 0.0);

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

有谁知道这可能是什么原因造成的?为什么 C# 不让我创建一个点?

编辑:我正在使用 System.Windows.Point 结构,我发现当我打算处于调试状态时,我实际上是在发布模式下运行的。这当然是问题所在,因为 tp3 正在被垃圾收集。感谢大家快速准确的回复!我正要掏出脑袋。是的,我的大脑。

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

4

3 回答 3

4

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

尝试在你的行之后添加类似的东西Point tempP = tp3;,你应该能够看到它。

于 2011-03-09T21:26:17.950 回答
2

如果在项目属性中选中了优化代码复选框,它将在最后一次使用后将本地对象设置为空,以便可以对其进行垃圾回收。此外,如果变量没有在任何地方使用,它实际上不会被分配。

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

于 2011-03-09T21:33:37.420 回答
1

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

尝试实例化 PointF:

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

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

PointF tp3 = PointF.Empty;
于 2011-03-09T21:29:59.640 回答