我在.cs文件中有这个简单的结构(它是.dll项目的一部分):
namespace SteelStructuresLibrary
{
public struct myPoint
{
private double x;
private double y;
public double X { get { return x; } set { x = value; } }
public double Y { get { return y; } set { y = value; } }
public myPoint(double x, double y)
{
this.x = x;
this.y = y;
}
}
}
然后我是一个像这样的静态类(在另一个.cs文件中 - 如果这是同一个.dll项目的任何值):
namespace SteelStructuresLibrary
{
public static class Geometry
{
public static myPoint? getIntersectingPoint(Cline line1,Cline line2)
{
//...some calculations of A1,B1 etc...
if (det == 0)
{
return null;
}
else
{
myPoint IntersectingPoint=new myPoint (((B2 * C1 - B1 * C2) / det),((A1 * C2 - A2 * C1) / det));
return IntersectingPoint;
}
}
}
}
返回IntersectionPoint。 但是,我调用这个getIntersectingPoint函数,在我的程序中,没有返回任何对象:
myPoint IntersPoint;
IntersPoint = (myPoint) Geometry.getIntersectingPoint(line1, line2);
在调试过程中,监视窗口显示“当前上下文中不存在名称'IntersPoint'”。我在这里缺少什么?
答案 0 :(得分:0)
您正在使用Nullable。使用它时,首先必须检查它是否包含值。只有它有价值,你才能找回它。
myPoint? IntersPointNullable = Geometry.getIntersectingPoint(line1, line2);
if (IntersPointNullable.HasValue)
{
myPoint IntersPoint= IntersPointNullable.Value;
}else{
// no intersection
}
答案 1 :(得分:0)
您说 - 在调试过程中,观察窗口显示"名称' IntersPoint'在当前上下文中不存在"。您确定自己处于正确的环境中吗?可能是你没有打到正确的关闭?你在哪里设置断点?
可能在您点击的断点处没有定义IntersPoint。在IntersPoint被分配的那一行上添加一个断点并查看。
我复制了你的代码,编译并运行时没有任何问题。