gpt4 book ai didi

c# - 如何简化一组静态对象之间的相似方法调用?

转载 作者:行者123 更新时间:2023-11-30 13:02:57 25 4
gpt4 key购买 nike

我在我的程序中使用了一些静态“形状”类,并且由于每个静态类都需要执行相同类型的操作,我想知道是否有一种方法可以通用化方法调用. 如果类不是静态的,我会简单地使用一个接口(interface)。

这是我的情况的要点:

public static Triangle
{

public int getNumVerts()
{
return 3;
}

public bool isColliding()
{
return Triangle Collision Code Here
}

}

public static Square
{

public int getNumVerts()
{
return 4;
}

public bool isColliding()
{
return Square Collision Code Here
}

}

我更愿意做的是简单地调用 Shape.getNumVerts(),而不是我当前的 switch 语句:

switch (ShapeType)
{
case ShapeType.Triangle:
Triangle.GetNumVerts();
case ShapeType.Square:
Square.GetNumVerts();
}

如果我使用单例而不是静态类,我可以简单地使用多态性,但要避免单例,并且我需要传递大量引用,以便我可以根据需要对各个形状进行处理.

有没有办法对这些静态类进行分组,或者 switch 语句是否达到预期效果?

最佳答案

不清楚您是否需要单独的 TriangleSquare 类。您可以消除它们,只使用 Shape 类,其方法接受 ShapeType 参数。但实际上它也带有开关

public static class Shape
{
public static int GetNumVerts(ShapeType type)
{
switch (type)
{
case ShapeType.Triangle:return 3;
case ShapeType.Square:return 4;
//...
}
}
}

至于switch,我想这样使用它是很常见和正常的。

然而,您可能有单独的 TriangleSquare 类,并在 Shape.GetNumVerts 方法中进行切换。它会让你调用 Shape.GetNumVerts(ShapeType.Triangle);,即 switch 封装在 Shape 类中,并且只在那里使用一次。

public static class Shape
{
public static int GetNumVerts(ShapeType type)
{
switch (type)
{
case ShapeType.Triangle:return Triangle.GetNumVerts();
case ShapeType.Square:return Square.GetNumVerts();
//...
}
}
}

关于c# - 如何简化一组静态对象之间的相似方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com