我使用类似命名(但不相同)的参数类型创建了两个重载方法,它们的声明如下所示:
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的类型。我甚至明确地写了我正在谈论的Rectangle
和Point
,我仍然得到这个错误。我究竟做错了什么?如果没有出现这种错误,是否有可能重载方法?我应该改变他们的名字吗?
答案 0 :(得分: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)