1

我创建了两个具有类似名称(但不相同)类型的参数的重载方法,它们的声明如下所示:

public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, System.Drawing.Point p)
public static RectangleNineSides GetRectangleSide(Microsoft.Xna.Framework.Rectangle rect, Microsoft.Xna.Framework.Point p)

如您所见,两种方法的参数不同,但是当像这样调用其中一种时:

h.RectangleNineSides side = h.GetRectangleSide(new Microsoft.Xna.Framework.Rectangle(), new Microsoft.Xna.Framework.Point());

在我的 XNA 项目中,我收到一条错误消息:

“System.Drawing.Point”类型是在未引用的程序集中定义的。您必须添加对程序集 'System.Drawing, Version=4.0.0.0, blah-blah' 的引用

但是,如果在当前项目的任何地方都没有调用另一个方法,为什么编译器会关心它呢?

任何 WinForms 项目中都会出现类似的错误,但 XNA 的类型除外。我什至明确写了RectanglePoint正在谈论的内容,但我仍然收到此错误。我究竟做错了什么?是否不可能有重载方法而不会出现这种错误?我应该改变他们的名字吗?

4

1 回答 1

1

编译器很在意,因为它编译的代码可能会被调用,也可能不会被调用;尽管如此,它仍然需要编译代码并能够解析定义类型的位置。

我建议不要将不同的技术绘图方法放在您的助手类中,但是如果您这样做,那么我肯定会以不同的方式命名它们,如下所示:

public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, 
                                                  System.Drawing.Point p)
public static RectangleNineSides GetXnaRectangleSide(Microsoft.Xna.Framework.Rectangle rect, 
                                                  Microsoft.Xna.Framework.Point p)
于 2013-09-25T00:49:07.777 回答