如何使用从方法中检索的对象

时间:2015-08-08 06:58:14

标签: c# object methods polygon

我创建了一个方法来创建一个六边形的多边形并将其作为对象检索,但我不知道如何使用所述对象。代码如下:

    public object Hexagon()
    {
        float h;
        float r;
        int x = 20;
        int y = 20;
        int s = 10;

        h = HexOperations.ConvertToFloat(HexOperations.Calc(s));
        r = HexOperations.ConvertToFloat(HexOperations.Calc(s));

        Point[] vert= new Point[6];

        vert[0] = new Point(x, y);
        vert[1] = new Point(x + s, y);
        vert[2] = new Point(x + s + h, y + r);
        vert[3] = new Point(x + s, y + r + r);
        vert[4] = new Point(x, y + r + r);
        vert[5] = new Point(x - h, y + r);

        Polygon pol = new Polygon();

        System.Windows.Media.PointCollection pointC = new System.Windows.Media.PointCollection();

        pointC.Add(vert[0]);
        pointC.Add(vert[1]);
        pointC.Add(vert[2]);
        pointC.Add(vert[3]);
        pointC.Add(vert[4]);
        pointC.Add(vert[5]);

        pol.Points = pointC;

        pol.Stroke = Brushes.Black;

        return pol;
    }

如果我在返回之前添加'MainGrid.Children.Add(pol)',我可以看到Grid'MainGrid'上打印的六边形,但我只是不知道如何在所述方法之外使用它。我试过这个:

    MainGrid.Children.Add(Hexagon());

这给了我错误“无法从'对象'转换为System.Window.UIElement”。

也尝试过:

    Polygon poly = new Hexagon();

其中说“新表达式需要()。[],{},;,在类型”。

之后

    Hexagon poly = new Hexagon();

这显然给了我一个指头。我只是不知道还有什么可以尝试。可能是因为我用我的方法犯了一个基本的错误,但是,无论如何,提前谢谢你。

2 个答案:

答案 0 :(得分:3)

您的方法被声明为返回object - 但您知道它' sa Polygon,因此假设您希望调用者依赖它返回{{1} (这似乎是合理的)你应该改变返回类型。

Polygon

您还需要调用方法,而不是尝试将其用作public Polygon Hexagon() 的类型名称,或者直接传递它:

new

我还建议:

  • 使用动词命名方法,例如: Polygon polygon = Hexagon(); // Use polygon here
  • 在控制台应用程序而不是GUI中学习C#的基础知识 - 这种方式更加简单,让您专注于您尝试学习的一件事,而不会被弄糊涂UI工作的巨大复杂性

答案 1 :(得分:1)

为什么不能使用显式转换将Object转换为所需类型?

Polygon objPolygon =(Polygon)Hexagon(); 

我认为这将解决您的问题。您可以参考更多有关转化和投射here的信息。