静态函数的新对象实例

时间:2014-04-04 19:51:40

标签: c#

我在.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'”。我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

您正在使用Nullable。使用它时,首先必须检查它是否包含值。只有它有价值,你才能找回它。

myPoint? IntersPointNullable = Geometry.getIntersectingPoint(line1, line2);
if (IntersPointNullable.HasValue)
{
    myPoint IntersPoint= IntersPointNullable.Value;
}else{
    // no intersection
}

答案 1 :(得分:0)

您说 - 在调试过程中,观察窗口显示"名称' IntersPoint'在当前上下文中不存在"。您确定自己处于正确的环境中吗?可能是你没有打到正确的关闭?你在哪里设置断点?

可能在您点击的断点处没有定义IntersPoint。在IntersPoint被分配的那一行上添加一个断点并查看。

我复制了你的代码,编译并运行时没有任何问题。