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

How to use object retrieved from method

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

    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;
    }

如果我在 return 之前添加 ´MainGrid.Children.Add(pol)´,我可以看到打印在网格“MainGrid”上的六边形,但我只是不知道如何在外部使用它说的方法。我试过这个:

    MainGrid.Children.Add(Hexagon());

这给我错误 "cannot convert from ´object´ to System.Window.UIElement"。

也尝试过:

    Polygon poly = new Hexagon();

也就是说 "a new expression requires (). [], {}, ;, after type"。

并且:

    Hexagon poly = new Hexagon();

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

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

public Polygon Hexagon()

您还需要调用该方法,而不是尝试将其用作带有new的类型名称或直接传递它:

Polygon polygon = Hexagon();
// Use polygon here

我还会推荐:

  • 用动词命名方法,例如CreateHexagon
  • 在控制台应用程序而不是 GUIs 中学习 C# 的基础知识 - 这种方式要简单得多,它可以让您专注于您正在尝试学习的一件事,而不会被巨大 UI 工作的复杂性

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

Polygon objPolygon =(Polygon)Hexagon(); 

我认为这会解决您的问题。你可以参考更多关于转换和铸造 here.