如何使用从方法中检索到的对象
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.
我创建了一个创建六边形多边形并将其作为对象检索的方法,但我不知道如何使用该对象。代码如下:
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.