【问题标题】:How to use object retrieved from method如何使用从方法中检索到的对象
【发布时间】:2015-10-31 15:44:44
【问题描述】:

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

    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)”,我可以看到网格“MainGrid”上打印的六边形,但我只是不知道如何在上述方法之外使用它。我试过这个:

    MainGrid.Children.Add(Hexagon());

这给了我错误“无法从‘object’转换为 System.Window.UIElement”。

也试过了:

    Polygon poly = new Hexagon();

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

还有:

    Hexagon poly = new Hexagon();

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

【问题讨论】:

  • Hexagon() 是一个函数,而不是一个对象。不宜使用newPolygon poly = Hexagon(); 应该可以正常工作。

标签: c# object methods polygon


【解决方案1】:

你的方法被声明为返回object - 但你知道它是一个Polygon,所以假设你希望调用者依赖它返回一个Polygon(这似乎是合理的)你应该更改返回类型。

public Polygon Hexagon()

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

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

我也会推荐:

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

【讨论】:

    【解决方案2】:

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

    Polygon objPolygon =(Polygon)Hexagon(); 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 2017-07-27
      相关资源
      最近更新 更多