这应该很简单。这是我的一行代码,它给我带来了麻烦:
Point tp3 = new Point(0.0, 0.0);
然而,如果我在此之后直接中断并在“立即”窗口中键入“tp3”,我会得到“当前上下文中不存在名称'tp3'。”到底他妈发生了什么?我在这个项目中有更多的代码,而不仅仅是那一行,但我不确定会影响它的是什么。在这之后我直接打破了这条线,并且tp3无处可见。如果我在休息模式下将鼠标悬停在tp3上,我也什么也得不到。
有谁知道造成这种情况的原因是什么?为什么C#不让我创建一个Point ??
编辑:我正在使用System.Windows.Point结构,当我打算在Debug中时,我发现我实际上是在Release模式下运行。当然,这是问题所在,因为tp3正在被垃圾收集。感谢大家快速准确的回复!我正要把我的脑筋拉出来。是的,我的大脑。
编辑#2:实际上,正如Maupertuis指出的那样(双关语完全是预期的),因为Point是一个结构,它不是被收集的,而是编译器甚至没有首先为它分配空间,因为它不是没用过。谢谢Maupertuis!
答案 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;